什么叫错误处理器?
就是一旦发生错误,用来处理该错误的一种“机器” --其实就是一个函数。
自定义错误处理,就是指:
让系统不要去处理错误,而完全由我们(开发者)来对错误处理:显示和记录。
做法,其实很简单,就两步:
第一步:
设定要用于处理错误的函数名!
set_error_handler("f1");
第二步:
去定义该函数
function f1()
{
//这里可以任意写代码:自然正常是去显示错误报告和记录错误日志。
}
代码:
<?php //第一步:定义要作为错误处理的函数名 set_error_handler("my_error_handler"); //第二步:定义该函数 //该函数需要定义4个形象,分别代表: //$errCode :代表错误代号(级别) //$errMsg: 代表错误信息内容 //$errFile: 代表发生错误的文件名 //$errLine: 代表发生错误的行号 //注意,该函数我们不要在程序中调用,而是,一发生错误就会被自动调用 //而且会传入该4个实参数据 function my_error_handler($errCode,$errMsg,$errFile,$errLine) { $str = ""; $str .= "<p><font color='red'>大事不好,发生错误:</font>"; $str .= "<br />错误代号为:".$errCode; $str .= "<br />错误内容为:".$errMsg; $str .= "<br />错误文件为:".$errFile; $str .= "<br />错误行号为:".$errLine; $str .= "<br />发生时间为:".date("Y-d-m H:i:s"); $str .= "</p>"; echo $str;//输出该“构建”的错误完整处理结果 //也可以将该内容“写入”到某个文件中去,也就是所谓记录错误日志! }
案例一:
echo $v1; //使用不存在的变量
运行结果:
大事不好,发生错误:
错误代号为:8
错误内容为:Undefined variable: v1
错误文件为:F:\demo\wuxianji\index.php
错误行号为:28
发生时间为:2018-07-03 06:23:56
案例二:
echo C1; //使用不存在的常量
运行结果:
大事不好,发生错误:
错误代号为:8
错误内容为:Use of undefined constant C1 - assumed 'C1'
错误文件为:F:\demo\wuxianji\index.php
错误行号为:28
发生时间为:2018-07-03 06:28:27
C1
案例三:
include './no_this_file.php'; //加载没有的文件
运行结果:
大事不好,发生错误:
错误代号为:2
错误内容为:include(./no_this_file.php): failed to open stream: No such file or directory
错误文件为:F:\demo\wuxianji\index.php
错误行号为:28
发生时间为:2018-07-03 06:30:05
大事不好,发生错误:
错误代号为:2
错误内容为:include(): Failed opening './no_this_file.php' for inclusion (include_path='E:\xampp\php\PEAR')
错误文件为:F:\demo\wuxianji\index.php
错误行号为:28
发生时间为:2018-07-03 06:30:05