首页 > php错误封装类

php错误封装类

1、创建MyErrorHandler.php文件

代码如下:

php
class MyErrorHandler {public $message;public $filename;public $line;public $vars = array();protected $_noticeLog = 'F:
oot
oticeLog.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,'[email protected]','From:php[error错误日志]');exit(1);}/*** 警告的错误*/public function dealWarning() {$errorMsg = <<<EOF
出现了警告的错误,如下:
产生警告的文件:{ $this->filename}
产生警告的信息:{ $this->message}
产生警告的行号:{ $this->line}
EOF;return error_log($errorMsg,1,'[email protected]','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函数,可以参考本人的上一篇文章如何配置mail函数发邮件。

转载于:https://www.cnblogs.com/gide/p/4549785.html

更多相关:

  • 1. Go 的错误机制 Go 语言的错误机制中与其他语言的主要差异如下: 没有异常机制error 类型实现了 error接口type error interface {Error() string } 可以通过errors.New来快速创建错误实例errors.New(" num is not in range[0,100]")...

  • 能够在Linux系统下体验到原生界面的网易云音乐是件不错的事情,但是它总是经常性的出现网络异常,界面无响应的问题 为了听歌的体验,进行深入探究: 首先通过终端启用网易云音乐:sudo netease-cloud-music 会得到网易云音乐运行时的信息,比如一些出错的信息 其实我已经解决了首要的问题(QSslSocket错误),因...

  • 【错误页面处理】 訪问一个错误的控制器 訪问一个错误的方法 有些控制器和方法禁止訪问   以上訪问会提示错误信息 404  403 以上错误信息是不方便给外边用户看到的。 1. 安全隐患 2. 用户体验不好 错误信息在site/error这个地方定义的。   如今我们要自己定义错误页面来显示我们的错误信息 转载于:...

  • 噪声的来源: 1、noise in y 2、noise in x 在有noise的情况下,vc bound还会work么??? 之前,x ~ p(x)  现在 y ~ P( y | x ) 在hoeffding的部分,只要 (x, y) 联合分布满足某个分布, 结果是一致的。   error measure:打分衡量f和g的距离 1、...

  • 在IIS7.5打开网页的时候,提示: HTTP 错误 500.0 - Internal Server Error 调用 LoadLibraryEx 失败,在 ISAPI 筛选器 C:WindowsMicrosoft.NETFrameworkv4.0.30319\aspnet_filter.dll,经过排除发现原来是两个斜杠导...

  • 开发环境使用phpstudy 编辑器用sublime 数据库navicat 需要下载composer 先配置好本地域名,然后需要我们将资源引入到项目里面 下载地址www.layui.com. layui框架有很多我们后台开发需要的控件,帮助我们高效完成后台搭建。 先创建我们的入口文件admins.php,接着我们在a...

  • php 如果在类中定义变量,在类的方法中调用时应该加上$this-> .     class ClassName {private $a = 333;function __construct(){$this->a = 2222;}public function bbb($value=''){echo $this->a;} } $b...

  • 今天我们来看UrlRule.php

  • 【数据对象映射模式】 是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作。例如在代码中 new 一个对象,使用数据对象映射模式就可以将对象的一些操作比如设置一些属性,就会自动保存到数据库,跟数据库中表的一条记录对应起来。   【代码实现】 在代码中实现数据对象映射模式,我们将实现一个 ORM(对象关系映射 Objec...