动手封装一个捕捉异常、错误和致命错误的类

作者: xahy 分类: 笔记 发布时间: 2019-07-17 20:05
<?php
//屏蔽错误
error_reporting(0);
// 致命错误捕获,或者终止时执行
register_shutdown_function('errorLog::fatalError');
//捕捉错误
set_error_handler('errorLog::appError');
//捕捉异常
set_exception_handler('errorLog::appException');
/***
 * 错误类
 * Class customErrorLog
 */
class errorLog{
    /***
     * 致命错误捕获
     */
    static public function fatalError() {
        if ($e = error_get_last()) {
            //存放错误信息数组
            $fatal_error\['error_msg'\]   =   isset($e\['message'\])?$e\['message'\]:'fatalError';
            $fatal_error\['error_file'\]     =   isset($e\['file'\])?$e\['file'\]:'';
            $fatal_error\['error_line'\]     =   isset($e\['line'\])?$e\['line'\]:'';
            $fatal_error\['error_time'\]     =   date('Y-m-d H:i:s',time());
            //销毁变量
            unset($e);
            //输出错误信息
            var_dump($fatal_error);
            //停止执行
            exit();
        }
    }
    /**
     * 自定义异常处理
     * @access public
     * @param mixed $e 异常对象
     */
    static public function appException($e) {
        //存放错误信息数组
        $error\['error_msg'\]   =   $e->getMessage();
        $error\['error_file'\]     =   $e->getFile();
        $error\['error_line'\]     =   $e->getLine();
        $error\['error_time'\]     =   date('Y-m-d H:i:s',time());
        //销毁变量
        unset($e);
        //输出错误信息
        var_dump($error);
        //停止执行
        exit();
    }

    /**
     * 自定义错误处理
     * @access public
     * @param int $errno 错误类型
     * @param string $errstr 错误信息
     * @param string $errfile 错误文件
     * @param int $errline 错误行数
     * @return void
     */
    static public function appError($errno, $errstr, $errfile, $errline,$error_context) {
        //错误信息
        $error_data_arr=array(
            'error_msg'=>$errstr,
            'error_file'=>$errfile,
            'error_line'=>$errline,
            'error_type'=>$errno,
            'file_param'=>$error_context,
            'error_time'=>date('Y-m-d H:i:s',time())
        );
        //销毁变量
        unset($errno,$errstr,$errfile,$errline,$error_context);
        //输出错误信息
        var_dump($error_data_arr);
        //停止执行
        exit();
    }
}

相关参考资料:
    PHP 错误处理

    PHP 异常处理

发表评论

电子邮件地址不会被公开。 必填项已用*标注