我想知道抛出所有异常是否可行。
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;
}
}
我有一个巨大的尝试catch块,但我想知道所有的错误,不仅是第一次抛出。这可能是不止一次尝试或类似的事情,或者我做错了吗?
谢谢
答案 0 :(得分:0)
你自己写的:“这永远不会被扔掉” [原文如此]。
因为异常永远不会被抛出,所以你无法捕获它。只有一个例外,因为在抛出一个异常之后,整个块被放弃,并且不再执行其中的代码。因此没有第二个例外。
答案 1 :(得分:0)
也许这就是OP实际要求的。如果函数不是原子函数并且允许某种程度的容错,那么你可以知道之后发生的所有错误,而不是die()
,如果你这样做:
public function test()
{
$arrayExceptions = array();
try {
//action 1 throws an exception, as simulated below
throw new Exception('Division by zero.');
}
catch (Exception $e)
{
//handle action 1 's error using a default or fallback value
$arrayExceptions[] = $e;
}
try {
//action 2 throws another exception, as simulated below
throw new Exception('Value is not 42!');
}
catch (Exception $e)
{
//handle action 2 's error using a default or fallback value
$arrayExceptions[] = $e;
}
echo 'Task ended. Errors: '; // all the occurred exceptions are in the array
(count($arrayExceptions)!=0) ? print_r($arrayExceptions) : echo 'no error.';
}