シャットダウン関数で例外がスローされ、try/catch ブロック内でキャッチされません。次に例を示します。
<?php
set_exception_handler(function($e){
echo "exception handled"; // not echoed
});
register_shutdown_function(function(){
throw new Exception("test"); // this should be caught by the exception handler above, but it doesn't
});
上記のコードを実行すると、次のようになります。
致命的なエラー: メッセージ 'test' で例外 'Exception' をキャッチできませんでした
ただし、 PHP マニュアルは次のように主張しています。
set_exception_handlerは、例外が try/catch ブロック内でキャッチされない場合に、デフォルトの例外ハンドラーを設定します。exception_handlerが呼び出された後、実行は停止します。
exception_handler
スローされた例外をキャッチしないのはなぜですか?