menu
書いてる野郎
orebike@gmail.com
class Hoge{ function piyo(){ echo "piyopiyo"; throw new Exception("unko"); #ここで発生させてる } } $a = new Hoge(); $a->piyo();
こいつを実行すると
Fatal error: Uncaught exception
なんかが発生する
本当の本番の時とかはPHPの標準的なエラー補足を使わないで、自作のハンドリング機構を組み込みたいところだ。
自作ならばここで細かくtry-catchする手間も省けたりする。
set_exception_handlerという関数に例外を補足するための例外オブジェクトを1個引数にとる関数をしていしてやると、catchされなかった例外はPHPの標準例外処理機構には飛ばずにexception_handler関数に飛ぶ
function exception_handler($e){ echo $e->getMessage(); echo "unko"; } set_exception_handler('exception_handler');
こうなると、catchから漏れた例外はどのクラスで発生しようがどの場所で発生しようがexception_handler関数に集まることになる。