PHP:触发致命错误?

Dud*_*ock 28 php fatal-error

当我的班级用户因为我不想要的东西而滥用它时,我希望能够在我的php类中抛出一个致命的,无法捕获的错误.我不希望他/她能够使用catch子句恢复.我知道trigger_error,但我只能发出警告或通知.

bwo*_*ebi 45

E_USER_ERROR是适合的常量.

trigger_error("Fatal error", E_USER_ERROR);
Run Code Online (Sandbox Code Playgroud)

另请参见手册页的第一个示例和PHP错误列表(只有以E_USER*开头的那些可以从trigger_error发出).

  • 非常具有讽刺意味的是,那个说"对不喜欢阅读文档的人有用"的人并没有费心去阅读手册页的第一个例子. (7认同)

Bra*_*ent 11

注意:如果您使用自定义错误处理程序(请参阅set_error_handler), E_USER_ERROR则不会暂停/退出/死亡,除非错误处理程序返回false

简而言之:您的自定义错误处理程序有效地确定是否E_USER_ERROR将其视为致命错误

  • 非常的.正如我在另一个地方所指出的那样,你可以通过以下方式创建致命错误:if($ isTestMode == 1){eval("noSuchFunction();"); 这个方法总能奏效. (2认同)

Why*_*... 5

debug_print_backtrace();
trigger_error("As much information as you can provide, please", E_USER_ERROR);
exit();
Run Code Online (Sandbox Code Playgroud)

exit()完全终止PHP脚本.您可以向用户或开发人员提供有关错误的信息越多越好.错误代码是过时的.

编辑:使用E_USER_ERROR应该终止脚本,所以在trigger_error()之前移动了debug_print_backtrace().