call_user_func_array在引发异常时不会中断

时间:2017-02-17 09:50:51

标签: php laravel

这是代码(Laravel中的一小部分):

foreach ($this->getListeners($event) as $listener) {

    $response = call_user_func_array($listener, $payload);

    Log::debug(var_export($response, true));

    ...
}

当我在call_user_func_array周围添加try catch块时,我可以捕获异常,但是当我删除它时,异常消失了,$ response = TRUE;   我需要在set_exception_handler中处理异常,有人可以告诉我原因吗?

注意:PHP 5.6,Laravel 5.2

1 个答案:

答案 0 :(得分:0)

你应该能够自己打破错误。

来自call_user_func_array docs

  

返回回调的返回值,或者出错时返回FALSE。

要处理错误,您只需执行以下操作:

foreach ($this->getListeners($event) as $listener) {

    $response = call_user_func_array($listener, $payload);

    if($response === false) {
        // do something on error
        break;
    }
}