3 回答
![?](http://img1.sycdn.imooc.com/545869390001b87802200220-100-100.jpg)
TA贡献2041条经验 获得超4个赞
简单回答:你做不到。参见手册:
使用用户定义的函数无法处理以下错误类型:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,以及调用set_error_handler()的文件中引发的大部分E_STRICT。
对于其他每个错误,您都可以使用 set_error_handler()
编辑:
既然看起来有关于这个主题的讨论,关于使用register_shutdown_function
,我们应该看看处理的定义:对我来说,处理错误意味着捕获错误并以一种“好”的方式做出反应用户和底层数据(数据库,文件,Web服务等)。
使用register_shutdown_function
您无法处理调用它的代码中的错误,这意味着代码仍然会在发生错误时停止工作。但是,您可以向用户显示错误消息而不是白页,但是您不能回滚代码在失败之前执行的任何操作。
![?](http://img1.sycdn.imooc.com/533e4ce900010ae802000200-100-100.jpg)
TA贡献1818条经验 获得超11个赞
您可以使用以下代码跟踪这些错误:
(如果它们出现在解析错误,只能抓到其他通过脚本文件include()或require(),或把这个代码放到一个auto_prepend_file其他的答案也提到。)
function shutdown() {
$isError = false;
if ($error = error_get_last()){
switch($error['type']){
case E_ERROR:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_USER_ERROR:
$isError = true;
break;
}
}
if ($isError){
var_dump ($error);//do whatever you need with it
}
}
register_shutdown_function('shutdown');
- 3 回答
- 0 关注
- 514 浏览
添加回答
举报