ホームページ  >  記事  >  バックエンド開発  >  致命的なエラーに関するいくつかの質問

致命的なエラーに関するいくつかの質問

WBOY
WBOYオリジナル
2016-06-23 13:50:41923ブラウズ

function dothing(){
$jb->she();

dothing();
echo 321;

上記のコードのように、実行すると、当然、致命的なエラーが発生します。オブジェクト以外の場合は、入力できない場合は 321 が返されます
これでは、その行為が間違っているかどうかはわかりません。私たちにとって、何かをすることはブラックボックスです。 dothing(); を実行した後、 echo 321

私の質問は、次の書き方に加えて、 321

set_error_handler('error'); を書く方法はありますか?

ディスカッションへの返信(解決策)

エラープログラムは終了し、以下は実行されません。は普通。
そのため、エラー処理を設定し、エラーが発生したときに対応する操作を実行する必要があります。


エラープログラムは終了し、以下は実行されません。は普通。
そのため、エラー処理を設定し、エラーが発生したときに対応する操作を実行する必要があります。


つまり、致命的なエラーをインターセプトする場合、または致命的なエラーがあるかどうかわからない場合は、set_error_handler に依存する必要があります。

はい、例外の場合は try catch を使用して解決できます。

ただし、致命的なエラーが発生するとプログラムが終了するため、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 を使用する必要があることがわかりました。これで終わりです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。