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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
解析php常用image图像函数集
Jun 24 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
PHP使用Alexa API获取网站的Alexa排名例子
Jun 12 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
Jun 29 PHP
phpmailer绑定邮箱的实现方法
Dec 01 PHP
Yii框架where查询用法实例分析
Oct 22 PHP
PHP接入支付宝接口失效流程详解
Nov 10 PHP
php解析非标准json、非规范json的方式实例
Dec 10 PHP
php慢查询日志和错误日志使用详解
Feb 27 PHP
PHP高并发和大流量解决方案整理
Mar 09 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
广播爱好者需要了解的天线知识
2021/03/01 无线电
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
jquery tools之tooltip
2009/07/25 Javascript
javascript面向对象之Javascript 继承
2010/05/04 Javascript
基于JQuery的Pager分页器实现代码
2010/07/17 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
python实现BackPropagation算法
2017/12/14 Python
python实现SOM算法
2018/02/23 Python
python+opencv识别图片中的圆形
2020/03/25 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
python批量修改交换机密码的示例
2020/09/22 Python
python os.rename实例用法详解
2020/12/06 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
中专生自我鉴定
2013/12/17 职场文书
生日主持词
2014/03/20 职场文书
学位证书委托书
2014/09/30 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
聊一聊python常用的编程模块
2021/05/14 Python
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js