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

本文实例讲述了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字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

(0)

相关推荐

  • php一些错误处理的方法与技巧总结

    1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中register_global默认为off 若想取得从另一页面提交的变量: 方法一:在PHP.ini中找到register_global,并把它设置为on. 方法二:在接收网页最前面放上这个extract($_POST);extract($_GET);(注意extract($_SESSION)前必须要有Session_Start()). 方法三:一个一个读取变量$a

  • PHP中的错误处理、异常处理机制分析

    例: 复制代码 代码如下: <?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错 ?> 那么正确的写法应该如下: 复制代码 代码如下: <?php if(file_exists('test.txt')){ $f=fopen('test.txt','r'); //使用完后关闭 fclose($f); } ?> 一.PHP错误处理的三种方式A.简单的die()语句: 等价于exit(); 例: 复制代码 代码如

  • PHP 自定义错误处理函数的使用详解

    复制代码 代码如下: function myErrorHandler($errno, $errstr, $errfile, $errline){    if(!(error_reporting() &$errno)){return;}    switch ($errno){    case E_USER_ERROR:        echo "<b>My ERROR</b> [$errno] $errstr<br/>";        ech

  • PHP 错误处理机制

    在日常的项目开发过程中,总是会出现一些我们意想不到的异常错误,如果我们对此没有进行相对完善的处理,那么程序看上去也很不专业,也很可能就会成为别人攻击系统的有效信息:有些错误异常会终止脚本执行,这个时候如果没有一些错误提示信息的话,那么我们只能从头开始看代码了,要知道项目中成百上千行的代码对我们来说是件多么恐怖的事情啊,那么我们如何在项目开发的过程中快速准确地定位到异常.错误呢,并进行相应的处理,本文由自己对错误.异常处理的了解,再此分享与大家相互学习交流,并作为一个备忘. 系统错误处理器: PH

  • PHP抓取HTTPS内容和错误处理的方法

    问题 在研究Hacker News API的时候遇到一个HTTPS问题.因为所有的Hacker News API都是通过加密的HTTPS协议访问的,跟普通的HTTP协议不同,当使用PHP里的函数 file_get_contents() 来获取API里提供的数据时,出现错误 使用的代码是这样的: <?php $data = file_get_contents("/http://blog.it985.com/"); ?> 当运行上面的代码是遇到下面的错误提示: PHP Warn

  • PHP 自定义错误处理函数trigger_error()

    定义和用法trigger_error() 函数创建用户定义的错误消息. trigger_error() 用于在用户指定的条件下触发一个错误消息.它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用. 如果指定了一个不合法的错误类型,该函数返回 false,否则返回 true. 语法trigger_error(error_message,error_types) 参数描述error_message必需.规定错误消息.长度限制为 1024 个

  • PHP中PDO的错误处理

    面向对象的方式 先看看如果连接错误等的处理,PHP中PDO的错误处理,使用面向对象的方式来处理: 复制代码 代码如下: <?php try { $db = new PDO('mysql:host=localhost;dbname=test', $user, $pass); $db = null; } catch (PDOException $e) { print "Error: " . $e->getMessage() . "<br/>";

  • PHP的全局错误处理详解

    本文目的 PHP的全局错误处理,在开发项目的时候很有用,可以帮助开发者快速定位一些问题,提高工作效率.默认情况下,全局错误会直接输出,但是最近开发时使用的一个框架库对全局错误处理进行了设定,导致很多错误信息没有输出,在定位问题上有一定的耗时.所以,研究了一下此库的实现,发现它设定了error_reporting和set_error_handler,导致此现象.现在记录一下这两个函数的用法,作为备忘录. 背景 PHP没有类型检测,开发人员比较容易输入错误单词,引起致命错误,最终导致脚本停止执行.如

  • PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function

    1.错误类型:PHP致命错误 Error type: PHP Fatal error Fatal error: Cannot redeclare (a) (previously declared in (b)) in (c) on line (d) 2.错误描述: 该错误报告表示你正企图对已经定义过的函数进行再次定义,其中 a----表示重复定义的函数名: b----第一次定义该函数时的文件名称及行号: c----第二次定义该函数时的文件名称: d----第二次定义该函数时的行号. 3.原因及解

  • PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法

    异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这种情况称为异常. PHP 5 添加了类似于其它语言的异常处理模块.在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获.需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常.每一个 try 至少要有一个与之对应的 catch.使用多个 catch 可以捕获不同的类所产生的异常.当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一

  • php自定义错误处理用法实例

    本文实例讲述了php自定义错误处理用法.分享给大家供大家参考.具体如下: <?php error_reporting(E_ALL); function ErrHandler($errorno, $errorstr, $errorfile, $errorline) { $display = true; $notify = false; $halt_script = false; $error_msg = "<br>The $errorno error is occurring a

  • 浅谈PHP中的错误处理和异常处理

    错误处理:          1. 语法错误     2. 运行时的错误     3. 逻辑错误 错误报告:                  错误E_ERROR         警告E_WARNING         注意E_NOTICE 开发阶段:开发时输出所有的错误报告,有利于我们进行调试 运行阶段:不要让程序输出任何一种错误报告 将错误报告写入日志中 一.   指定错误报告error_reporting=E_ALL(在php.inn) 二.   关闭错误输出display_errors=

随机推荐