[PHP错误异常]⑥--自定义错误处理器

MyErrorHandler.php

message = $message;
        $this->filename = $filename;
        $this->line = $line;
        $this->vars = $vars;
    }

    public static function deal($errno, $errmsg, $filename, $line, $vars)
    {
        $self = new self($errmsg, $filename, $line, $vars);
        switch ($errno) {
            case E_USER_ERROR:
                return $self->dealError();
                break;
            case E_USER_WARNING:
            case E_WARNING:
                return $self->dealWaining();
                break;
            case E_NOTICE:
            case E_USER_NOTICE:
                return $self->dealNotice();
                break;
            default:
                return false;
        }
    }

    /**
     * 如何处理致命错误
     */
    public function dealError()
    {
        ob_start();//打开输出缓冲区,所有的输出信息不在直接发送到浏览器
        debug_print_backtrace();//打印 PHP回溯
        $backtrace = ob_get_flush();
        $errorMsg = <<filename}
        产生错误的信息:{$this->message}
        产生错误的行号:{$this->line}
        追踪信息:{$backtrace}
EOF;
        error_log($errorMsg, 1, '[email protected]');
        exit(1);
    }

    /**
     * 如何处理警告
     */
    public function dealWarning()
    {
        $errorMsg = <<filename}
        产生警告的信息:{$this->message}
        产生警告的行号:{$this->line}
EOF;
        return error_log($errorMsg, 1, '[email protected]');
    }

    /**
     * 如何处理通知级别的错误
     */
    public function dealNotice()
    {
        $dateTime = date("Y-m-d H:i:s", time());
        $errorMsg = <<filename}
        产生通知的信息:{$this->message}
        产生通知的行号:{$this->line}
        产生通知的时间:{$dateTime}
EOF;
        return error_log($errorMsg, 3, $this->_noticeLog);
    }
}
?>

test.php


你可能感兴趣的:([PHP错误异常]⑥--自定义错误处理器)