标签:参考资料 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