通常、PHPのスクリプトはE_NOTICEの後も実行されていますが、関数の文脈で致命的なエラーにこれを上げる方法はありますか?それは、私の関数ではなく、コアPHP関数ではなく、 。E_NOTICEでphpを終了させる方法は?
答えて
E_NOTICE
をキャッチするカスタムエラーハンドラを作成できます。
これは未テストですが、右方向に行く必要があります。その後、
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
if ($errno == E_USER_NOTICE)
die ("Fatal notice");
else
return false; // Leave everything else to PHP's error handling
}
、それを離れるとき、あなたの関数を入力すると、PHPのエラーハンドラを復元するときset_error_handler()
を使用して、新しいカスタムエラーハンドラとして設定:
function some_function()
{
// Set your error handler
$old_error_handler = set_error_handler("myErrorHandler");
... do your stuff ....
// Restore old error handler
set_error_handler($old_error_handler);
}
"それは私の関数でのみ通知を終了する必要がありますが、コアphp関数ではなく、グローバルに" –
@Rikudoそれはまさに上記のことですか?何が欠けている? –
彼はそれがPHPコアE_NOTICEで死ぬことを望んでいませんが、E_USER_NOTICEは彼の機能によってトリガーされています:) –
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if ($errno == E_USER_NOTICE) {
die("Died on user notice!! Error: {$errstr} on {$errfile}:{$errline}");
}
return false; //Will trigger PHP's default handler if reaches this point.
}
set_error_handler('myErrorHandler');
trigger_error('This is a E_USER_NOTICE level error.');
echo "This will never be executed.";
?>
を使用して、カスタムエラーハンドラを使用します
Working Example
- 1. Androidアプリケーションを終了させる方法はありません
- 2. レールコンソールを終了せずにループを終了する方法
- 3. PHP readfile()は終了せず、Apacheサーバーをハングアップさせます
- 4. スレッドを終了するかメインスレッドに参加させる方法
- 5. 成功した終了コードでJobExecutionDeciderを終了する方法
- 6. node.jsプロセスを終了させるには?
- 7. shでPHPでPHPを終了する
- 8. jQueryのフリップエフェクトが終了するまでイベントを待機させる方法は?
- 9. シェルを強制終了せずにリモートプロセスを終了する方法
- 10. Swingで繰り返されるkeyPressed()/ keyReleased()イベントを終了させる方法
- 11. WP7開発:プログラムをEventHandlerの終了まで待機させる方法は?
- 12. Javaプログラムの実行を途中で終了させる方法は?
- 13. Pythonマルチプロセッシング:終了時にワーカーを終了させる
- 14. forEachObjectループを終了する方法は?
- 15. Pythonでプログラムを終了する方法
- 16. ウィンドウでnodemonを終了する方法
- 17. RandomAccessFilesは、アプリケーションが終了するまで終了しません。
- 18. onHandleIntent()が終了したときにAndroid IntentServiceを終了させない方法は?
- 19. ブラウザが終了したらセッションを終了する方法
- 20. Ctrl-Cなしでhbaseシェルでスキャン操作を終了させる方法
- 21. アプリケーションを終了させずにGLUTウィンドウを閉じる方法は?
- 22. このスレッドをキューで待機させる方法を終了しますか?
- 23. 完了したらPHPスクリプトは終了しません
- 24. ジョブ終了時にPHPスクリプトをスケジュールする方法
- 25. sshが終了した後にEC2でサーバを稼動させる方法
- 26. 何があってもPHPリクエストを終了させますか?
- 27. NSTimerが終了するまでの待ち合わせ方法
- 28. プロセスを終了して終了するまでの最良の方法
- 29. usingステートメントの終了方法
- 30. FTPの終了メッセージを知る方法
なぜあなた自身の機能に制限する必要がありますか?コア関数がE_NOTICEをスローすると、それは通常あなたが間違って(自分の関数で)使用していることを意味します。だから私はすべてのE_NOTICEを捕まえたいと思うと思う。 'trigger_error'を使って手動で通知をトリガしない限り、E_USER_NOTICEをトリガする必要があります。これは区別が容易です。 – deceze
私は主に自分の関数で少なくともE_NOTICEを終了することを考えました。私はE_USER_NOTICEの例外を記述することは無意味だと思います。この場合、プログラマーの目標は実際にその通知を作業に入れて実行を継続することです。 – rsk82
「自分の機能にのみ注意してください」あなたはあなたが[トリガー](http://il2.php.net/manual/en/function.trigger-error.php)を自分で見たいと思っていますか?あなたの関数内で発生する通常の "コア" 'E_NOTICE'ですか? –