PHP 错误处理


PHP 错误处理

在PHP编程中,很常见的一个操作是处理各种错误。PHP提供了一些内置的函数,可以让我们更好地处理和解决这些错误问题。本篇文章将介绍PHP中常用的错误处理方法以及如何处理这些错误。

错误报告

当PHP代码运行时,如果出现错误,PHP会显示一个错误报告。默认情况下,这个错误报告包含了E_ERROR、E_WARNING、E_PARSE、E_NOTICE 以及E_CORE_ERROR等错误。

PHP中有多种方式可以配置错误报告的方法。其中一种是在php.ini文件中配置,找到error_reporting并设置相应的错误级别。如果不想更改php.ini的配置,也可以在PHP文件中使用 error_reporting 函数来控制报错级别。

// 设置报错级别
error_reporting(E_ALL);

// 关闭报错
error_reporting(0);

错误类型

PHP 中的错误分为几种类型:

  • E_ERROR:由于严重的程序错误而导致的致命错误,程序会停止运行。
  • E_WARNING:非致命性错误,只是给开发者一个警告,程序会继续运行。
  • E_PARSE:由于语法错误而导致的错误,程序会停止运行。
  • E_NOTICE:警告开发者可能会出现问题,但不会导致程序停止运行。
  • E_CORE_ERROR:由于 PHP 启动无法加载基本函数库而导致的致命错误。

错误处理函数

PHP 提供了一些错误处理函数,这些函数可以让程序在出现错误时具有更好的控制和处理。这些函数可以根据我们的需求,自定义错误处理的方式,并返回我们所需的错误信息。

  • error_handler:自定义错误处理函数,用于处理 ‘E_WARNING’、‘E_NOTICE’、‘E_USER_WARNING’ 以及’ E_USER_NOTICE’ 级别的错误。
  • trigger_error:可以手动触发错误,用于处理’E_USER_ERROR’ 以及’E_USER_NOTICE’ 级别的错误。
  • set_error_handler:设置自定义的错误处理函数。
  • restore_error_handler:恢复系统默认的错误处理方式,取消绑定自定义错误处理函数。
function custom_error_handler($error_no, $error_message, $error_file, $error_line, $error_context) {

// Do something

}

set_error_handler('custom_error_handler');

异常处理

异常处理是PHP中比较新的错误处理方式,它允许程序在出现错误时,通过手动throw一个异常,来中断程序。

在PHP中,有两个内置的类,Exception和 ErrorException,我们可以使用这两个类来抛出异常并进行异常处理。

class CustomException extends Exception {
    public function errorMessage() {
        // error message
        $errorMsg = 'Error on line ' . $this->getLine() . ' in ' . $this->getFile() . ': <b>' . $this->getMessage() . '</b> is not a valid E-Mail address';
        return $errorMsg;
    }
}

$email = "someone@example.com";

try {
    // Check if
    if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
        // throw custom exception
        throw new CustomException($email);
    }
}

catch (CustomException $exception) {
    //display custom message
    echo $exception->errorMessage();
}

总结

对于初学者来说,PHP的错误处理可能会让人感到无从下手。然而,了解PHP的错误处理技术是非常重要的。采用适当的错误处理技术,可以使代码更为健壮,程序更为容错。