私のクラスのユーザーが意図しない何かのために悪用したときに、phpクラスで致命的でキャッチできないエラーをスローできるようにしたいと思います。彼/彼女がcatch節で回復できるようにしたくない。 trigger_error
については知っていますが、警告や通知を出すことしかできません。
E_USER_ERRORは適切な定数です。
trigger_error("Fatal error", E_USER_ERROR);
manual page および list of PHP Errors の最初の例も参照してください(E_USER *で始まるもののみがtrigger_errorから発行される場合があります) )。
注:カスタムエラーハンドラーを使用している場合( set_error_handler を参照)E_USER_ERROR
エラーハンドラがfalseを返さない限り、停止/終了/終了しません
簡単に言うと、カスタムエラーハンドラーはE_USER_ERROR
は致命的として扱われます
debug_print_backtrace();
trigger_error("As much information as you can provide, please", E_USER_ERROR);
exit();
exit()は、PHPスクリプトを完全に終了します。エラーについてユーザーまたは開発者に提供できる情報が多いほど、エラーは改善されます。エラーコードはパスです。
編集:E_USER_ERRORを使用するとスクリプトが強制終了されるため、debug_print_backtrace()をtrigger_error()の前に移動しました。
PHP 7以降)を使用している場合、 Error クラスも機能します。
_$flag = false;
try {
if ($flag == false) {
throw new Error('An error occured');
}
} catch (Error $e) {
echo $e->getMessage();
}
_
_Try Catch
_の外にthrow new Error('An error occured');
を置くと、致命的なエラーが発生します。