zoukankan      html  css  js  c++  java
  • 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函数发邮件。

  • 相关阅读:
    Qt编写控件属性设计器12-用户属性
    C#中通过三边长判断三角形类型(三角形测试用例)
    C#中通过Selenium定位<a>标签的问题
    SharePoint自动化系列——Manage "Site Subscriptions" using PowerShell
    SharePoint API测试系列——Records.BypassLocks测试
    SharePoint API测试系列——对Recorded Item做OM操作(委托的妙用)
    放松时刻——C#分割字符串
    链表——PowerShell版
    栈——PowerShell版
    队列——PowerShell版
  • 原文地址:https://www.cnblogs.com/gide/p/4549785.html
Copyright © 2011-2022 走看看