コードは次のとおりです。登録されたエラー処理関数 register_shutdown_function は実行されません。これは非常に奇妙です。
<プリ><コード> エラー報告(-1); ini_set('display_errors', 1); set_error_handler(function(){ echo "エラーハンドラを実行"; }、E_ALL); set_Exception_handler(function(){ echo "例外ハンドラーの実行"; }); register_shutdown_function(function(){ echo "シャットダウン関数を実行"; }); 試す{ 0$a; }catch(例外 $e){ エコー「例外をキャッチ」; }ついに{ エコー「最後に」; }実行結果:
<プリ><コード> 解析エラー: 構文エラー、C:\Users\mao\Documents\php\index.php の 18 行目に予期しない '$a' (T_VARIABLE) PHP 解析エラー: 構文エラー、C:\Users\mao\Documents\php\index.php の 18 行目に予期しない '$a' (T_VARIABLE) [0.1秒で完了]0$a は意図的に書き込まれましたが、例外が処理されなかったのはなぜですか?
PHP中文网2017-05-16 13:02:20
PHP7 の try{}catch(Error){} を試すことができます
http://php.net/manual/en/clas...
リーリー迷茫2017-05-16 13:02:20
まず第一に、例外とエラーは異なるものであることを理解する必要があります。一方、エラーは実行時のエラーを指します。エラーが発生すると、コード全体が実行されなくなり、プログラムがハングします。例外が発生した場合は、try catch を使用して例外をキャッチすることができ、プログラムは実行を続行できます。
明らかに、コードには構文エラーがあるため、このプログラムはまったく実行できません。これは、例外ではなくエラーが発生したことを意味します。では、望む効果を達成するにはどうすればよいでしょうか?まず構文の問題を解決する必要があります。以下のコードを見てください
リーリー