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

如何使用自定义错误处理程序处理解析致命错误?



冉冉说
浏览 491回答 3
3回答

缥缈止盈

简单回答:你做不到。参见手册:使用用户定义的函数无法处理以下错误类型: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您无法处理调用它的代码中的错误,这意味着代码仍然会在发生错误时停止工作。但是,您可以向用户显示错误消息而不是白页,但是您不能回滚代码在失败之前执行的任何操作。

慕尼黑8549860

您可以使用以下代码跟踪这些错误:(如果它们出现在解析错误,只能抓到其他通过脚本文件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');
打开App,查看更多内容
随时随地看视频慕课网APP