你怎么不需要命名异常php?

时间:2014-02-26 09:19:33

标签: php exception

当您抛出异常而没有命名时,为什么会这样?我读到这是一个对象,你不需要将一个对象分配给一个变量吗? e.g。

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

这是如何运作的:

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

Exception $ e是什么意思,这是宣告某个对象的某种简写吗?

2 个答案:

答案 0 :(得分:1)

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

catch块的功能基本上是在Exception关键字之后使用throw对象调用的方法。 catch块将Exception对象作为参数,在这种情况下,$e内的catch blockException

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

Exception

Read more about the Exception class here

如果您愿意,您甚至可以在投掷之前命名try { $ex = new Exception('Test exception.'); throw $ex; } catch (Exception $e) { echo "Cacthed exception."; } 对象:

{{1}}

答案 1 :(得分:0)

是的,这是一个对象。 catch (Exception $e) {}表示“捕获任何类”Exception“的异常对象,或将其作为其父类之一,并将其​​存储在变量$e中。

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

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