PHP 错误处理机制

PHP中错误处理机制主要是通过error_reporting和set_error_handler两个函数实现的。以下是处理PHP错误的完整攻略:

PHP中错误处理机制主要是通过error_reporting和set_error_handler两个函数实现的。以下是处理PHP错误的完整攻略:

错误级别

PHP错误分为不同级别,每个级别对应一个数字。在PHP中提供了 error_reporting 函数来设置需要报告哪些错误级别的错误信息。

以下是常见的错误级别:

  • E_ERROR: 致命错误,脚本无法运行
  • E_WARNING: 脚本运行时出现了问题,但脚本仍然可以继续运行
  • E_NOTICE: 在脚本执行期间发生了一些不寻常的事件,但不是严重的错误
  • E_PARSE: 语法错误,脚本终止运行
  • E_DEPRECATED: 不推荐使用的代码警告
  • E_STRICT: 强制标准问题,PHP版本不兼容等信息
  • E_ALL: 报告所有错误,包括警告和需要注意的通知

错误处理函数

PHP中提供了set_error_handler函数来指定处理错误信息的函数。该函数有两个参数,第一个是指定函数名,第二个是指定错误级别。当脚本发生错误并且错误级别在指定的范围内时,自动调用该函数处理错误。

以下是示例代码:

function custom_error_handler($errno, $errstr, $errfile, $errline) {
    echo "<b>Custom error:</b> [$errno] $errstr <br/>";
    echo " Error on line $errline in $errfile<br/>";
}

set_error_handler("custom_error_handler", E_USER_WARNING);

echo($test);

在上面的代码中,我们定义了一个 custom_error_handler 函数,来处理 E_USER_WARNING 错误级别的错误。当代码运行到 echo($test) 时,由于 $test 未定义,将引发警告错误,然后自动调用 custom_error_handler 函数处理错误。

抛出异常

PHP中还提供了throw和try-catch语句来处理异常。

以下是示例代码:

class customException extends Exception {
  public function errorMessage() {
    return "Error on line ".$this->getLine()." in ".$this->getFile().": <b>".$this->getMessage()."</b> is not a valid email address";
  }
}

$email = "someone@example...com";

try {
    if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
      throw new customException($email);
    }
  }

catch(customException $e) {
  echo $e->errorMessage();
}

在上面的代码中,我们定义了一个 customException 类,当filter_var函数无法验证邮箱时,会抛出此异常,并在 catch 块中捕获并处理它。

以上就是处理PHP错误的完整攻略。

本文标题为:PHP 错误处理机制

基础教程推荐