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 相关文章推荐
最省空间的计数器
Oct 09 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
Jun 12 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
php实现的二分查找算法示例
Jun 20 PHP
PHP操作Redis数据库常用方法示例
Aug 25 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(2)――PHP类型
2010/02/15 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
jquery获取input表单值的代码
2010/04/19 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
关于Numpy中的行向量和列向量详解
2019/11/30 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
Django配置文件代码说明
2019/12/04 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
python输出pdf文档的实例
2020/02/13 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
Ajax请求总共有多少种Callback
2016/07/17 面试题
园艺师求职信
2014/03/10 职场文书
个人授权委托书范本
2014/09/14 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python