PHP忽略自定义错误处理程序

mau*_*lla 1 php

可能重复:
如何捕获PHP致命错误

我想创建一个自定义错误处理程序,但PHP忽略它仍然使用内置的错误处理程序.下面的示例给出了内置致命错误,因为未定义test():

 function critical_error($error_number,$error_string,$error_file,$error_line,$error_context) {
     echo "<strong>error:</strong> echo ".$error_string;
     exit();
 }

 set_error_handler("critical_error",8191);
 test();
 exit;
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Sho*_*hoe 5

您可能错误地定义了错误级别.尝试使用:

set_error_handler("critical_error", E_ALL);
Run Code Online (Sandbox Code Playgroud)

另请注意:

使用用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,以及调用set_error_handler()的文件中引发的大部分E_STRICT.

但如果没有完整的脚本(包括test()),很难说清楚.我在我的本地服务器上测试过,一切正常.

  • 感谢您的建议,我认为问题在于我没有添加E_ALL.test()没有定义,我希望PHP给我一个致命错误,看看自定义错误处理程序是否会捕获它. (2认同)