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批量生成缩略图的代码
Jul 19 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 PHP
php中的buffer缓冲区用法分析
May 31 PHP
redis+php实现微博(二)发布与关注功能详解
Sep 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教程孙仲岳主讲
2008/01/07 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
用JS实现简单的登录验证功能
2017/07/28 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
使用Python来开发微信功能
2018/06/13 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
从运行效率与开发效率比较Python和C++
2018/12/14 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
python数据分析:关键字提取方式
2020/02/24 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Python如何进行时间处理
2020/08/06 Python
容易被忽略的Python内置类型
2020/09/03 Python
美国钻石商店:Zales
2016/11/20 全球购物
一套C++笔试题面试题
2012/06/06 面试题
主题酒店策划书
2014/01/28 职场文书
董事长秘书职责
2014/01/31 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
python双向链表实例详解
2022/05/25 Python