码迷,mamicode.com
首页 > 其他好文 > 详细

内部错误捕获

时间:2020-06-23 13:43:13      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:参考资料   over   nes   UNC   nic   文档   产生   php   core   

  记录一次捕获程序异常方式

  set_error_handler:在官方文档里面有这样一个备注:

“以下级别的错误不能由用户定义的函数来处理: E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING,和在 调用 set_error_handler() 函数所在文件中产生的大多数 E_STRICT。”

  因此此处做了两处拦截,一个是通过register_shutdown_function来记录被终止时的场景,另一个是内部错误抛出时的场景。

return function () {
    register_shutdown_function(function () {
        //获取最后发生的错误
        $error = error_get_last();
        errorHandle($error[‘type‘], $error[‘message‘], $error[‘file‘], $error[‘line‘]);
    });
    set_error_handler(function ($errNo, $errMessage, $errFile, $errLine) {
        errorHandle($errNo, $errMessage, $errFile, $errLine);
    });

    function errorHandle($errNo, $errMessage, $errFile, $errLine)
    {
        $fatalError = [E_ERROR,E_CORE_ERROR,E_COMPILE_ERROR,E_RECOVERABLE_ERROR,E_PARSE];
        if (!in_array($errNo, $fatalError, true)) {
            return;
        }
        $log = [
            ‘type‘ => $errNo,
            ‘message‘ => $errMessage,
            ‘file‘ => $errFile,
            ‘line‘ => $errLine,
        ];
        echo json_encode($log, JSON_UNESCAPED_UNICODE);
    }
};

  参考资料:https://juejin.im/post/590d8d4ba0bb9f00588e4358

内部错误捕获

标签:参考资料   over   nes   UNC   nic   文档   产生   php   core   

原文地址:https://www.cnblogs.com/jeyfang/p/13181350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!