当我的班级用户滥用它而不是我想要的东西时,我希望能够在我的php类中抛出一个致命的,无法捕获的错误。我不希望他/她能够通过catch条款恢复。
我知道trigger_error
,但我只能发出警告或通知。
答案 0 :(得分:44)
E_USER_ERROR是适合的常数。
trigger_error("Fatal error", E_USER_ERROR);
另请参阅manual page和list of PHP Errors的第一个示例(只有以E_USER *开头的示例可能会从trigger_error发出)。
答案 1 :(得分:11)
注意:如果您使用自定义错误处理程序(请参阅set_error_handler)
除非错误处理程序返回false,否则E_USER_ERROR
将不会停止/退出/死亡
nutshell:您的自定义错误处理程序有效地确定E_USER_ERROR
是否被视为致命
答案 2 :(得分:5)
debug_print_backtrace();
trigger_error("As much information as you can provide, please", E_USER_ERROR);
exit();
exit()完全终止PHP脚本。您可以向用户或开发人员提供有关错误的信息越多越好。错误代码是过时的。
编辑:使用E_USER_ERROR应该终止脚本,所以在trigger_error()之前移动了debug_print_backtrace()。
答案 3 :(得分:1)
如果您使用的是PHP 7或更高版本,Error类也适用:
$flag = false;
try {
if($flag == false) {
throw new Error('An error occured');
}
...
}
catch(Error $e) {
echo $e -> getMessage();
}
如果您将throw new Error('An error occured');
放在Try Catch
之外,您将收到致命错误。