ope*_*rog 3 php error-handling
当我的脚本开始时,我有:
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
Run Code Online (Sandbox Code Playgroud)
然后,我用PHP注册我的自定义错误处理程序:
function handleError($code, $text, $file, $line) {
echo "&%!!";
return true;
}
set_error_handler('handleError');
Run Code Online (Sandbox Code Playgroud)
接下来,有一些代码会产生如下错误:
致命错误:在第32行的/Applications/MAMP/htdocs/mysite/classes/Test.php中调用未定义的方法DB :: getInstanceForDB()
无论我是否指定自定义错误处理程序,我一直在使用调用堆栈和我网站上的所有内容获取标准PHP错误消息框.知道什么是错的吗?
编辑:无论我是否返回true,它都不会调用我的自定义处理程序.
首先,您需要使您的错误处理函数返回true.来自set_error_handler:
如果函数返回FALSE,则继续执行正常的错误处理程序.
其次,要注意致命错误不会被处理set_error_handler.您还需要使用register_shutdown_function.所以你的代码应该是这样的:
// Handles non-fatal errors
function handleError($code, $text, $file, $line) {
var_dump($code);
return true;
}
set_error_handler('handleError');
// Handles fatal errors
function fatalShutdown() {
var_dump(error_get_last());
}
register_shutdown_function('fatalShutdown');
Run Code Online (Sandbox Code Playgroud)