function dothing(){
$jb->she();
dothing();
echo 321;
上記のコードのように、実行すると、当然、致命的なエラーが発生します。オブジェクト以外の場合は、入力できない場合は 321 が返されます
これでは、その行為が間違っているかどうかはわかりません。私たちにとって、何かをすることはブラックボックスです。 dothing(); を実行した後、 echo 321
私の質問は、次の書き方に加えて、 321
set_error_handler('error'); を書く方法はありますか?
ディスカッションへの返信(解決策)
エラープログラムは終了し、以下は実行されません。は普通。
そのため、エラー処理を設定し、エラーが発生したときに対応する操作を実行する必要があります。
エラープログラムは終了し、以下は実行されません。は普通。
そのため、エラー処理を設定し、エラーが発生したときに対応する操作を実行する必要があります。
つまり、致命的なエラーをインターセプトする場合、または致命的なエラーがあるかどうかわからない場合は、set_error_handler に依存する必要があります。
はい、例外の場合は try catch を使用して解決できます。
ただし、致命的なエラーが発生するとプログラムが終了するため、try catch は適用されません。<?phpfunction dothing(){ $a = 1; $b = 0; if($b==0){ throw new Exception ( 'Division by zero.' ); }}try{ dothing();}catch(Exception $e){ echo 'error:'.$e->getMessage();}echo 321;?>
この場合、try catch
<?phpfunction dothing(){ $a = 1; $b = 0; if($b==0){ throw new Exception ( 'Division by zero.' ); }}try{ dothing();}catch(Exception $e){ echo 'error:'.$e->getMessage();}echo 321;?>
を使用できますが、致命的なエラーは機能しません。しかし、これをインターセプトするには set_error_handler を使用する必要があることがわかりました。これで終わりです。