欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

自定义错误处理器

程序员文章站 2022-03-18 14:50:02
什么叫错误处理器? 就是一旦发生错误,用来处理该错误的一种“机器” --其实就是一个函数。 自定义错误处理,就是指: 让系统不要去处理错误,而完全由我们(开发者)来对错误处理:显示和记录。 做法,其实很简单,就两步: 第一步: 设定要用于处理错误的函数名! set_error_handler("f1 ......

什么叫错误处理器?

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

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

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

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

第一步:

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

  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