PHP 自定义错误处理

224 阅读1分钟
  • 之前,我们面对的情形都是错误发生的时候,系统生成错误,并处理错误(给出错误信息)。
  • 我们能控制的就只是:是否显示,显示什么,是否记录,记录到哪里?
  • 实际上,我们也可以更进一步控制错误信息,以诀定错误发生的时候,显示什么样的错误信息。 这就是“自定义错误处理”。

  • 具体做法,分2步:
    • 第1步: 声明错误发生时,由我们自己来处理,设定一个错误处理的函数名。
    • 第2步: 定义该函数,在函数中详细设定错误的处理情况:怎么显示,显示什么,怎么记录,记录什么。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <?php
  // 必须先设置错误回调,后面报错才能得到回调
  // 自定义错误,分2步:
  // 1、声明,我们自己使用自己的函数处理错误
  // set_error_handler('函数名')
  set_error_handler('my_error_handler');
  // 2、定义函数!
  // errCode:错误代码,errMsg:错误信息,errFile:错误文件,errLine:错误行号
  // 此形参顺序固定,是由系统调用并传入实参数据
  function my_error_handler($errCode, $errMsg, $errFile, $errLine) {
    echo '<br>错误代码:' . $errCode;
    echo '<br>错误信息:' . $errMsg;
    echo '<br>错误文件:' . $errFile;
    echo '<br>错误行号:' . $errLine;
    echo '<hr>';

    // 可以将拼接的错误字符串存到指定文件夹
    // file_put_contents('./error_log.txt', $error_str, FILE_APPEND);
    // file_put_contents('./error_log.html', $error_str, FILE_APPEND);
  }

  // 报错代码
  include 'nav1.php'; // 载入失败
  echo $page; // 未定义变量
  ?>
</body>
</html>