PHP Exception 学习笔记

什么是 Exception?

Exception 是一种在程序执行期间发生的错误或异常情况。当遇到错误时,程序应该尽可能地恢复,并且向用户显示有意义和理解的错误消息。这使得程序更加健壮和可靠。

Exception 类

在 PHP 中,我们可以使用 Exception 类来处理错误和异常情况。Exception 是一个标准类,它是所有异常类的基类。在新的 PHP 版本中,所有其它异常类都扩展自 Exception 类。

抛出 Exception

我们可以使用 throw 关键字来抛出 Exception。如果我们想在程序中抛出一个异常,我们需要做以下事情:

  1. 实例化一个 Exception 对象并传递错误消息;
  2. 使用 throw 关键字抛出该实例。

下面是一个关于如何抛出 Exception 的示例:

phpCopy Code
function divide($dividend, $divisor) { if ($divisor === 0) { throw new Exception("Divisor cannot be zero."); } return $dividend / $divisor; } try { echo divide(10, 0); } catch (Exception $e) { echo "Caught Exception: " . $e->getMessage(); }

在上面的示例中,函数 divide 用于将两个数字相除。如果第二个数字为零,则会抛出一个 Exception。在调用 divide 函数时,我们使用了 try-catch 块来捕获 Exception 并将其错误消息输出到屏幕上。

自定义异常类

我们还可以自定义自己的异常类来更好地处理程序中的错误情况。自定义异常类应该继承自 Exception 类,并提供一些有意义的方法来处理错误。

下面是一个示例自定义异常类的示例:

phpCopy Code
class DivideByZeroException extends Exception { public function __construct($message, $code = 0, Throwable $previous = null) { parent::__construct($message, $code, $previous); } public function __toString() { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } public function customFunction() { echo "A custom function for this type of exception\n"; } } function divide($dividend, $divisor) { if ($divisor === 0) { throw new DivideByZeroException("Divisor cannot be zero."); } return $dividend / $divisor; } try { echo divide(10, 0); } catch (DivideByZeroException $e) { echo "Caught Exception: " . $e->getMessage(); echo $e->customFunction(); }

在上面的示例中,我们创建了一个名为 DivideByZeroException 的自定义异常类,并添加了一个名为 customFunction 的方法。当调用 divide 函数时,如果第二个参数为零,则会抛出 DivideByZeroException 异常。在捕获这个异常时,我们也调用了 customFunction 方法。