- 154 名前:デフォルトの名無しさん (ワッチョイ 0bd6-rApL) mailto:sage [2016/11/26(土) 11:00:09.75 ID:zRxKnjZm0.net]
- PHP5.6までのケースで説明すると、PHPのエラーは元々例外ではないので、
php.net/manual/ja/class.errorexception.php の「例」のようにexception_error_handler()を設定して例外に変換することで、エラーハンドリングを行いやすくしていた。 この場合の変換に用いられるのがErrorException。 つまりErrorExceptionは、Error、WarningやNoticeといった、プログラムの実行に関する例外として投げるべきもので、 端的にいうとデバッグ用として用いられ、アプリケーション特有の例外とは分けて考える。 例) try { if($value[0] > 5){ throw new MyException("値が許容値を超えています"); } } catch(MyException $ex){ // 与えられた値が正しくない場合の処理。アプリケーション特有の例外。プログラムは正しく動作している echo $ex->getMessage(); } catch(ErrorException $ex){ // プログラム実行エラー // 例えば$valueがarrayでなかった場合Noticeが発生し、これがErrorExceptionに変換されて投げられてくる // これはシステムの不具合であり、そこにバグがあることがわかる。 // この例外のエラーメッセージはシステムのバグの実態なので、ユーザーに知らせるべきではない echo "システムエラーです"; } catch(Exception $ex){ // 予期しない例外。ここで例外がキャッチされた場合も、やはりバグがあることがわかる。 // この例外のエラーメッセージはシステムのバグの実態なので、ユーザーに知らせるべきではない echo "システムエラーです"; }
|

|