0

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

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

谢谢

4

2 回答 2

0

你自己写的:“这永远不会被扔掉” [原文如此]。

因为永远不会抛出异常,所以您无法捕获它。只有一个异常,因为在抛出一个异常后,整个块被放弃,不再执行其中的代码。因此没有第二个例外。

于 2013-08-13T12:39:02.333 回答
0

也许这就是OP实际要求的。如果该函数不是原子的并且允许某种程度的容错,那么您可以知道之后发生的所有错误,而不是die()ing 如果您执行以下操作:

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

}
于 2017-01-24T12:39:00.437 回答