自定义错误处理器

时间:2023-01-01 18:35:45

什么叫错误处理器?

  就是一旦发生错误,用来处理该错误的一种“机器” --其实就是一个函数。

自定义错误处理,就是指:

  让系统不要去处理错误,而完全由我们(开发者)来对错误处理:显示和记录。

做法,其实很简单,就两步:

第一步:

  设定要用于处理错误的函数名!

  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