php实现的错误处理封装类实例


Posted in PHP onJune 20, 2017

本文实例讲述了php实现的错误处理封装类。分享给大家供大家参考,具体如下:

1、创建MyErrorHandler.php文件

代码如下:

<?php
class MyErrorHandler {
  public $message;
  public $filename;
  public $line;
  public $vars = array();
  protected $_noticeLog = 'F:\root\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($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函数,可以参考前文《PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法》。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP伪静态写法附代码
Jun 20 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
认识并使用PHP超级全局变量
Jan 26 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
PHP通过内置函数memory_get_usage()获取内存使用情况
Nov 20 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
Laravel中的Auth模块详解
Aug 17 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 #PHP
php实现的双色球算法示例
Jun 20 #PHP
php实现的二分查找算法示例
Jun 20 #PHP
创建无限极分类树型结构的简单方法
Jun 20 #PHP
PHP实现的简单排列组合算法应用示例
Jun 20 #PHP
php提交表单时保留多个空格及换行的文本样式的方法
Jun 20 #PHP
PHP中模糊查询并关联三个select框
Jun 19 #PHP
You might like
php中的字符编码转换函数用法示例
2014/10/20 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
Javascript实现的分页函数
2007/02/07 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
js的回调函数详解
2015/01/05 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
如何使用puppet替换文件中的string
2018/12/06 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python中文字符串截取问题
2015/06/15 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
Python sublime安装及配置过程详解
2020/06/29 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
市场推广策划方案
2014/06/02 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
滴水洞导游词
2015/02/10 职场文书
开业庆典致辞
2015/08/01 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
python实现简单反弹球游戏
2021/04/12 Python
MySQL通过binlog恢复数据
2021/05/27 MySQL
python代码实现扫码关注公众号登录的实战
2021/11/01 Python