私は現在PHPで働いています。私が構築している CMS のエラー システムに取り組んでいます (楽しみのために)。私のシステム (php コンパイラではない) の致命的なエラーについては、組み込みの Exception クラスを拡張する FatalException クラスを作成しました。これらのタイプのエラーはとにかくシステムを停止させるので、__construct に exit を挿入しました。
class FatalException extends Exception{
public function __construct($message) {
exit("<h1 style='color:red;' >FATAL ERROR: $message </h1>");
}
}
したがって、私のコードでは、データベースへの接続などを確認し、それができない場合は FatalException("データベースに接続できません: $database_error_message") をスローします。try/catch ブロックにはなりません。
たとえば、コードを実行してデータベースに接続できない場合、画面に表示されるのは大きな赤い文字の文章だけです。それで問題なく動作しますが、これは悪い習慣/コーディングですか?
編集:
実際には、このように始まったわけではありません。私はもともとエラーをログに記録してからキャッチ領域で終了していましたが、とにかくすべての致命的なエラーが終了する場合は、コンストラクターに入れるだけだと思いました。それから、出ようとしているキャッチ エリアに実際に到達していないことに気付きました。そのため、文を try/catch ブロックに入れることは、ちょっとした問題点でした。それは質問につながります。