捕获ServiceManager异常

时间:2014-08-13 17:32:46

标签: php exception-handling zend-framework2

当我使用服务管理器获取在初始化期间抛出异常的对象时,我无法用一个简单的方法来捕获这个:

try {
    $hybridAuth = $this->getServiceManager()->get('HybridAuth');
}
catch (Exception $e) {
    var_dump('catched');
}

相反,Zend会使用着名的“发生错误”页面

来捕获异常

这显示了抛出异常的“雪球”(因为服务无法初始化而其他服务依赖于等)

如何捕获异常(然后放入一些代码逻辑)以阻止Zend捕获它?

1 个答案:

答案 0 :(得分:0)

我认为你的问题不在于如何捕获ServiceManager例外情况。

你这样做的方式是错误的:

catch (Exception $e)

将从当前命名空间中捕获异常。你需要的是捕获PHP全局异常。 您遇到与此one相同的问题。

通过以下方式更改您的代码:

try {
     $hybridAuth = $this->getServiceManager()->get('HybridAuth');
    }
catch (\Exception $e) {
    var_dump('catched');
   }

或者通过添加以下内容导入全局php异常:

use \Exception;