zoukankan      html  css  js  c++  java
  • PHP 错误与异常 笔记与总结(9)自定义错误处理器

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

    <?php
    class myErrorHandler{
        //$message:错误信息
        //$filename:错误文件名
        //$line:错误行号
        //$vars:额外信息    
        public $message = '';
        public $filename = '';
        public $line = 0;
        public $vars = array();
        protected $_noticeLog = 'D:practisephpFrom
    otice
    oticeLog.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 dealNotice(){
            $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); 
        }
    }
  • 相关阅读:
    20个热门jQuery的提示和技巧
    10个原生JavaScript技巧
    HTML5开发 BUG解决
    JS笔试题
    AMD:浏览器中的模块规范
    Win8 App使用Listview的简单方法
    Javascript模块化编程
    移动端插件IScroll.js
    移动web资源概论
    Commonjs规范中module.exports和exports的区别
  • 原文地址:https://www.cnblogs.com/dee0912/p/4537369.html
Copyright © 2011-2022 走看看