为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:自定义错误处理程序 - 处理解析和致命错误

PHP:自定义错误处理程序 - 处理解析和致命错误

PHP
冉冉说 2019-09-20 16:57:11
如何使用自定义错误处理程序处理解析和致命错误?
查看完整描述

3 回答

?
缥缈止盈

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您无法处理调用它的代码中的错误,这意味着代码仍然会在发生错误时停止工作。但是,您可以向用户显示错误消息而不是白页,但是您不能回滚代码在失败之前执行的任何操作。


查看完整回答
反对 回复 2019-09-20
?
慕尼黑8549860

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');


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 514 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信