当前位置:  首页>> 技术小册>> PHP8入门与项目实战(5)

简单地终止脚本并不是恰当的方式。本节将讲解如何自定义错误和错误触发器。创建一个自定义的错误处理器非常简单,用户可以创建一个专用函数,然后在PHP中发生错误时调用该函数。

自定义的错误函数的语法格式如下:

  1. error_function(error_level,error_message,error_file,error_line,error_context)

该函数必须至少包含error_level和error_message两个参数,另外3个参数(error_file、error_line和error_context)是可选的。各个参数的具体含义如表9-2所示。

参数error_level定义错误规定的报告级别,这些错误报告级别是错误处理程序旨在处理的错误的不同类型。具体的级别值和含义如表9-3所示。

下面通过实例来讲解如何自定义错误和错误触发器。

首先创建一个处理错误的函数:

  1. function customError($errno, $errstr)
  2. {
  3. echo "<b>错误:</b> [$errno] $errstr<br/>";
  4. echo "终止程序";
  5. die();
  6. }

上面的代码是一个简单的错误处理函数。当它被触发时,会取得错误级别和错误消息。然后输出错误级别和消息,并终止程序。

创建了一个错误处理函数后,下面需要确定在何时触发该函数。在PHP中,使用set_error_handler()函数设置用户自定义的错误处理函数。该函数用于创建运行时的用户自己的错误处理方法。该函数会返回旧的错误处理程序,若失败,则返回null。具体的语法格式如下:

  1. set_error_handler(error_function,error_types)

其中,error_function为必需参数,规定发生错误时运行的函数。error_types是可选参数,如果不选择此参数,就表示默认值为E_ALL。

在本例中,由于针对所有错误来使用自定义错误处理程序,具体的代码如下:

  1. set_error_handler("customError");

下面通过尝试输出不存在的变量来测试这个错误处理程序。

【例9.2】

  1. <?php
  2. //定义错误函数
  3. function customError($errno, $errstr){
  4. echo "<b>错误:</b> [$errno] $errstr";
  5. }
  6. //设置错误函数的处理
  7. set_error_handler("customError");
  8. //触发自定义错误函数
  9. echo($test);
  10. ?>

运行后结果如图9-5所示。

在脚本中用户输入数据的位置,当用户的输入无效时,需要触发错误。在PHP中,这个任务由trigger_error()完成。

trigger_error()函数创建用户自定义的错误消息。trigger_error()用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由set_error_handler()函数创建的用户自定义函数一起使用。如果指定了一个不合法的错误类型,该函数返回false,否则返回true。

trigger_error()函数的具体语法格式如下:

  1. trigger_error(error_message,error_types)

其中,error_message为必需参数,规定错误消息,长度限制为1024个字符。error_types为可选参数,规定错误消息的错误类型,可能的值为E_USER_ERROR、E_USER_WARNING和E_USER_NOTICE。

【例9.3】

  1. <?php
  2. $test=5;
  3. if ($test>4){
  4. trigger_error("Value must be 4 or below"); //创建自定义错误信息
  5. }
  6. ?>

运行后结果如图9-6所示。由于test数值为5,因此将会发生E_USER_WARNING错误。

下面通过实例来讲解trigger_error()函数和自定义函数一起使用的处理方法。

【例9.4】

  1. <?php
  2. //定义错误函数
  3. function customError($errno, $errstr){
  4. echo "<b>错误:</b> [$errno] $errstr";
  5. }
  6. //设置错误函数的处理
  7. set_error_handler("customError",E_USER_WARNING);
  8. // trigger_error函数
  9. $test=5;
  10. if ($test>4){
  11. trigger_error("Value must be 4 or below",E_USER_WARNING);
  12. }
  13. ?>

运行后结果如图9-7所示。

9.2.4 错误记录
默认情况下,根据php.ini中的error_log配置,PHP向服务器的错误记录系统或文件发送错误记录。通过使用error_log()函数,用户可以向指定的文件或远程目的地发送错误记录。

通过电子邮件向用户自己发送错误消息,也是一种获得指定错误通知的好办法。下面通过实例的方式来讲解。

【例9.5】

运行后结果如图9-8所示。在指定的someone@example.com邮箱中将收到同样的错误信息。