PHP throw 表达式

简介

在PHP中,throw关键字用于抛出异常。当程序执行过程中遇到错误或者异常情况时,可以使用throw来手动生成一个异常对象,并将其传递给调用的代码,让它进一步处理这个异常。

语法

throw new Exception(message, code);
  • Exception:需要抛出的异常类名。在PHP中,所有异常都必须是或继承自Exception类。
  • message:可选参数,表示异常消息。这是一个描述性的字符串,用于说明发生了什么错误。
  • code:可选参数,表示异常代码。它是一个整数,可以在捕获异常时使用,以区分不同类型的异常。

使用throw抛出异常

下面是一个简单的例子,演示如何使用throw来抛出一个异常:

function divide($dividend, $divisor) {
    if ($divisor == 0) {
        throw new Exception("Division by zero is not allowed.");
    } else {
        return $dividend / $divisor;
    }
}

在这个例子中,如果除数为零,我们就抛出一个新的异常对象。异常消息描述了错误情况。然后,调用代码可以捕获并处理这个异常,而不是让程序崩溃或产生意外结果。

自定义异常类

除了使用内置的Exception类之外,还可以创建自己的异常类。这样做可以更好地组织和处理项目中不同种类的异常。下面是一个简单的例子:

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

在这个例子中,我们创建了一个自定义异常类CustomException,它继承自内置的Exception类。我们还添加了一个自定义方法errorMessage(),用于生成更详细的错误消息。

捕获异常

当抛出异常时,应该在合适的地方捕获它。可以使用try-catch结构来实现这一点:

try {
    $result = divide(10, 0);
    echo "Result: " . $result;
} catch (Exception $e) {
    echo "Caught exception: " . $e->getMessage();
}

在这个例子中,我们将可能抛出异常的代码放在try块中。如果发生了异常,程序会跳到相应的catch块,并执行其中的代码来处理异常。

总结

  • throw关键字用于抛出异常。
  • 可以使用内置的Exception类或创建自定义异常类。
  • 应该在合适的地方捕获并处理异常,以避免程序崩溃或产生意外结果。