【发布时间】:2013-08-13 12:05:49
【问题描述】:
我想知道是否可以抛出所有异常。
public function test()
{
$arrayExceptions = array();
try {
throw new Exception('Division by zero.');
throw new Exception('This will never get throwed');
}
catch (Exception $e)
{
$arrayExceptions[] = $e;
}
}
我有一个巨大的 try catch 块,但我想知道所有的错误,而不仅仅是第一个抛出的错误。这可能需要不止一次尝试或类似的事情,或者我做错了吗?
谢谢
【问题讨论】:
-
这不是异常的工作方式。如果它不是异常,你不应该使用异常——而是创建带有错误细节的对象,聚合它们,如果有必要,最后抛出一个异常。 (有些吹毛求疵:你总是会抛出所有异常 - 第一个会中断相关块的执行,其余的不会执行......)
-
throwing 异常的全部意义在于它在该点终止执行并基本上执行 GOTO 捕获块。因此,如果您可能有多个异常,则只会报告第一个异常。一旦进入 catch 块,继续执行 catch 块中的代码,如果你不杀死那里的程序,它会在 catch 块之后继续。