PHP Exception 学习笔记
什么是 Exception?
Exception 是一种在程序执行期间发生的错误或异常情况。当遇到错误时,程序应该尽可能地恢复,并且向用户显示有意义和理解的错误消息。这使得程序更加健壮和可靠。
Exception 类
在 PHP 中,我们可以使用 Exception
类来处理错误和异常情况。Exception 是一个标准类,它是所有异常类的基类。在新的 PHP 版本中,所有其它异常类都扩展自 Exception 类。
抛出 Exception
我们可以使用 throw
关键字来抛出 Exception。如果我们想在程序中抛出一个异常,我们需要做以下事情:
- 实例化一个 Exception 对象并传递错误消息;
- 使用
throw
关键字抛出该实例。
下面是一个关于如何抛出 Exception 的示例:
phpCopy Codefunction 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 Codeclass 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
方法。