PHP 错误与异常 笔记与总结(9)自定义错误处理器
自定义错误处理器更加智能。
<?php
class myErrorHandler{
//$message:错误信息
//$filename:错误文件名
//$line:错误行号
//$vars:额外信息
public $message = '';
public $filename = '';
public $line = 0;
public $vars = array();
protected $_noticeLog = 'D:\practise\php\From\notice\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($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();
break;
default:
return false; //使用内置错误处理程序
}
} //处理致命错误
public function dealError(){
//开启内存缓存
ob_start();
//打印一条PHP回溯
debug_print_backtrace();
$backtrace = ob_get_flush();
$errorMsg = <<<EOF
出现了致命错误,如下:
产生错误的文件:{$this->filename}
产生错误的信息:{$this->message}
产生错误的行号:{$this->line}
追踪信息:{$backtrace};
EOF;
error_log($errorMsg, 1, '472323087@qq.com'); //1:管理员,发送给管理员
exit(1);//以错误代码形式来终止
} //处理警告
public function dealWarning(){
$errorMsg = <<<EOF
出现了警告错误,如下:
产生警告的文件:{$this->filename}
产生警告的信息:{$this->message}
产生警告的行号:{$this->line}
追踪信息:{$backtrace};
EOF;
return error_log($errorMsg, 1, '472323087@qq.com');
} //处理通知
public function dealNotice(){
$datetime = date("Y-m-d H:i:s", time());
$errorMsg = <<<EOF
出现了通知错误,如下:
产生通知的文件:{$this->filename}
产生通知的信息:{$this->message}
产生通知的行号:{$this->line}
产生通知的时间:{$datetime};
EOF;
return error_log($errorMsg, 3, $this->_noticeLog);
}
}
PHP 错误与异常 笔记与总结(9)自定义错误处理器的更多相关文章
- PHP 错误与异常 笔记与总结(10)错误处理器测试
关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...
- handler 方法进不去,服务器上出现应用程序错误。此应用程序的当前自定义错误设置禁止远程查看
HTTP/1.1 500 Internal Server ErrorCache-Control: privateContent-Type: text/html; charset=utf-8Server ...
- PHP 错误与异常 笔记与总结(12 )异常
① 异常的概念:异常和错误的区别 PHP 部分借鉴了 C++ 和 JAVA 中的异常处理机制.PHP 中的异常是指 程序运行和预期不太一致,与错误是两个不同的概念. ② 异常的语法结构 [例1] &l ...
- PHP 错误与异常 笔记与总结(17 )像处理异常一样处理 PHP 错误
有两种方式可以在 PHP 中以异常的方式处理错误: ① PHP 内置的 ErrorException类(也是 Exception 类的子类) <?php function exception_e ...
- PHP 错误与异常 笔记与总结(16 )自定义异常处理器
可以使用自定义异常处理器来处理所有未捕获的异常(没有用 try/catch 捕获的异常). set_exception_handler():设置一个用户定义的异常处理函数,当一个未捕获的异常发生时所调 ...
- PHP 错误与异常 笔记与总结(8)自定义错误处理函数 set_error_handler()
通过 Set_error_handler() 函数设置用户自定义的错误处理函数. 步骤: ① 创建错误处理函数 ② 设置不同级别调用函数 ③ Set_error_handler() 函数制定接管错误处 ...
- PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送
当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ...
- PHP学习笔记三十三【自定义错误处理器】
<?php //自定义错误处理器 //$errorno 错误号 //$errmes错误信息 //这两个参数是必须的 function my_error($errorno,$errmes) { e ...
- PHP 错误与异常 笔记与总结(18 )页面重定向实现
在发生错误时,将用户重定向到另一个页面. <?php header('content-type:text/html; charset=utf-8'); class ExceptionRedire ...
随机推荐
- 网络流-最大流 模板(poj 1273)
#include<cstdio> #include<iostream> #include<cstring> #include<queue> #defin ...
- php 获取当前时间
<?php echo $showtime=date("Y-m-d H:i:s");?>
- Log4Net异常日志记录在asp.net mvc3.0的应用(转载)
这篇博客写的很好:http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html 前言 log4net是.Net下一个非常优秀的开源 ...
- ytu 2002:C语言实验——单词统计(水题)
C语言实验——单词统计 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 61 Solved: 34[Submit][Status][Web Board] ...
- Mac OS X 上的安装Lisp开发环境
到网站:https://common-lisp.net/project/lispbox/ 下载lispbox 解压下载下来的包,找到Emacs 测试: 我们也可以使用homebrew来安装lisp的解 ...
- Java hour 52 Weather
采用jetty 后,默认的welcome-file-list 配置失效了,直接跳转到了struts2 的control 中去了. <welcome-file-list> <welco ...
- Java Hour 37 Weather ( 10 )
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 36 Weather 从失败的地方爬起来 在jsp 中,使用EL 表 ...
- SOAPFaultException
javax.xml.ws.soap.SOAPFaultException: String index out of range: -6 at org.apache.cxf.jaxws.JaxWsCli ...
- vim跳到文件头和文末结尾
gg : 跳转到文件头 Shift+g : 跳转到文件末尾
- JVM的数据类型
Java虚拟机是通过某些数据类型来执行计算的,数据类型可以分为两种:基本类型和引用类型,基本类型的变量持有原始值,而引用类型的变量持有引用值. Java语言中的所有基本类型同样也都是Java虚拟机中的 ...