为什么你不需要命名异常 php?



当你抛出一个异常时,你没有命名它,这是为什么?我读到这是一个对象,你不需要将一个对象分配给变量吗?例如

throw new Exception('Division by zero.');

这是如何工作的:

catch (Exception $e){
//do something
}

异常$e是什么意思,这是声明对象的某种简写吗?

throw只是一个关键字,您需要跟随类型为 Exception 的对象或基于 Exception 类的另一个类。Exception类构造函数采用一个 string 参数,该参数使用该异常消息实例化Exception对象。

catch块基本上用作在 throw 关键字后使用 Exception 对象调用的方法。catch 块将Exception对象作为参数,在本例中,该参数在catch block内命名为 $e

这是Exceptionconstruct

public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )

在此处阅读有关异常类的更多信息

如果你愿意,你甚至可以在抛出Exception对象之前命名它:

try {
    $ex = new Exception('Test exception.');
    throw $ex;
} catch (Exception $e) {
    echo "Cacthed exception.";
}

是的,它是一个对象。 catch (Exception $e) {}的意思是"捕获任何属于"异常"类或将其作为其父级之一的异常对象,并将其存储在变量$e中"。

然后在{}块中,您可以相应地处理它(例如,写入echo $e->getMessage();.

您可以捕获任何类型的异常 - 例如,catch (InvalidArgumentException $e)将仅捕获类型 InvalidArgumentException 的异常,而catch (Exception $e)将捕获任何类型的异常,包括 InvalidArgumentException

最新更新