码迷,mamicode.com
首页 > Web开发 > 详细

PHP 错误与异常 笔记与总结(9)自定义错误处理器

时间:2015-05-29 00:30:55      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

自定义错误处理器更加智能。

<?php
class myErrorHandler{
    //$message:错误信息
    //$filename:错误文件名
    //$line:错误行号
    //$vars:额外信息    
    public $message = ‘‘;
    public $filename = ‘‘;
    public $line = 0;
    public $vars = array();
    protected $_noticeLog = ‘D:\practise\php\From\notice\noticeLog.log‘;

    public function __construct($message,$filename,$line,$vars){
        //初始化信息
        $this->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->dealWarning();
                break;
            case E_NOTICE:
            case E_USER_NOTICE:
                return $self->dealNotice();
                break;
            default:
                return false; //使用内置错误处理程序
        }
    }

    //处理致命错误
    public function  dealError(){
        //开启内存缓存
        ob_start();
        //打印一条PHP回溯
        debug_print_backtrace();
        $backtrace = ob_get_flush();
        $errorMsg = <<<EOF
            出现了致命错误,如下:
            产生错误的文件:{$this->filename}
            产生错误的信息:{$this->message}
            产生错误的行号:{$this->line}
            追踪信息:{$backtrace};        
EOF;
        error_log($errorMsg, 1, ‘472323087@qq.com‘); //1:管理员,发送给管理员
        exit(1);//以错误代码形式来终止
    }

    //处理警告
    public function dealWarning(){
        $errorMsg = <<<EOF
            出现了警告错误,如下:
            产生警告的文件:{$this->filename}
            产生警告的信息:{$this->message}
            产生警告的行号:{$this->line}
            追踪信息:{$backtrace};        
EOF;
    return error_log($errorMsg, 1, ‘472323087@qq.com‘);
    }

    //处理通知
    public function dealNotic(){
        $datetime = date("Y-m-d H:i:s", time());
        $errorMsg = <<<EOF
            出现了通知错误,如下:
            产生通知的文件:{$this->filename}
            产生通知的信息:{$this->message}
            产生通知的行号:{$this->line}
            产生通知的时间:{$datetime};        
EOF;    
        return error_log($errorMsg, 3, $this->_noticeLog); 
    }
}

 

PHP 错误与异常 笔记与总结(9)自定义错误处理器

标签:

原文地址:http://www.cnblogs.com/dee0912/p/4537369.html

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