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之第五天
Oct 09 PHP
同时提取多条新闻中的文本一例
Oct 09 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
php 发送带附件邮件示例
Jan 23 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
Jun 03 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 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中调用JAVA
2006/10/09 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
Smarty模板配置实例简析
2019/07/20 PHP
js的闭包的一个示例说明
2008/11/18 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
javascript打印输出json实例
2013/11/11 Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
2015/03/31 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
Python实现的几个常用排序算法实例
2014/06/16 Python
Python bsddb模块操作Berkeley DB数据库介绍
2015/04/08 Python
Django日志模块logging的配置详解
2017/02/14 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
如何在python中实现线性回归
2020/08/10 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
求网格中的黑点分布
2013/11/06 面试题
工程专业应届生求职信
2014/02/19 职场文书
专家推荐信模板
2014/05/09 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
医院保洁员管理制度
2015/08/05 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL