• php错误封装类


    1、创建MyErrorHandler.php文件

    代码如下:

    <?php
    class MyErrorHandler {
        public $message;
        public $filename;
        public $line;
        public $vars = array();
        protected $_noticeLog = 'F:
    oot
    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($errno,$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();
                default:
                    return false;
            }
        }
        
        /**
        * 致命的错误
        */
        public function dealError() {
            ob_start();
            debug_print_backtrace();
            $backtrace = ob_get_flush();
            $errorMsg = <<<EOF
    出现了致命的错误,如下:
    产生错误的文件:{$this->filename}
    产生错误的信息:{$this->message}
    产生错误的行号:{$this->line}
    追踪信息{$backtrace}
    EOF;
            error_log($errorMsg,1,'279921301@qq.com','From:php[error错误日志]');
            exit(1);
        }
    
        /**
        * 警告的错误
        */
        public function dealWarning() {
            $errorMsg = <<<EOF
    出现了警告的错误,如下:
    产生警告的文件:{$this->filename}
    产生警告的信息:{$this->message}
    产生警告的行号:{$this->line}
    EOF;
            return error_log($errorMsg,1,'279921301@qq.com','From:php[error警告日志]');
        }
    
        /**
        * 通知的错误
        */
        public function dealNotice() {
            $datetime = date('Y-m-d H:i:s');
            $errorMsg = <<<EOF
    出现了通知的错误,如下:
    产生通知的文件:{$this->filename}
    产生通知的信息:{$this->message}
    产生通知的行号:{$this->line}
    产生通知的时间:{$datetime}
    EOF;
            return error_log($errorMsg,3,$this->_noticeLog);
        }
    }

    2、测试代码

    <?php
    include "MyErrorHandler.php";
    
    //报告所有 PHP 错误
    error_reporting(-1);
    
    //不显示错误信息
    ini_set('display_errors',0);
    set_error_handler(array('MyErrorHandler','deal'));
    
    echo $test; //Notice错误
    settype($var,'test');  //警告错误
    test();

    注意:发送邮件需要在本地配置mail函数,可以参考本人的上一篇文章如何配置mail函数发邮件。

  • 相关阅读:
    pom配置进行版本号统一管理
    设置配置文件信息时的classpath
    [spring]启动时报错:NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I
    powerdesigner使用之——从“概念模型”到“物理模型”
    Spring-MVC理解之二:前置控制器
    Spring-MVC理解之一:应用上下文webApplicationContext
    spring配置:context:property-placeholder 读取配置文件信息 在配置文件中使用el表达式填充值
    javaee web项目的目录结构
    22 Swap Nodes in Pairs
    21. Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/gide/p/4549785.html
Copyright © 2020-2023  润新知