从一个try catch块获取所有异常

时间:2013-08-13 12:05:50

标签: php exception try-catch

我想知道抛出所有异常是否可行。

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块,但我想知道所有的错误,不仅是第一次抛出。这可能是不止一次尝试或类似的事情,或者我做错了吗?

谢谢

2 个答案:

答案 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.';

}