Php 捕获ServiceManager异常

Php 捕获ServiceManager异常,php,exception-handling,zend-framework2,Php,Exception Handling,Zend Framework2,当我使用服务管理器获取一个在初始化过程中抛出异常的对象时,我无法通过一个简单的: try { $hybridAuth = $this->getServiceManager()->get('HybridAuth'); } catch (Exception $e) { var_dump('catched'); } 相反,Zend用一个著名的出错页面捕获异常 这向我展示了一个雪球般的抛出异常,因为一个服务无法初始化,而其他服务依赖于此,等等 我如何捕获异常,然后放入一些代

当我使用服务管理器获取一个在初始化过程中抛出异常的对象时,我无法通过一个简单的:

try {
    $hybridAuth = $this->getServiceManager()->get('HybridAuth');
}
catch (Exception $e) {
    var_dump('catched');
}
相反,Zend用一个著名的出错页面捕获异常

这向我展示了一个雪球般的抛出异常,因为一个服务无法初始化,而其他服务依赖于此,等等


我如何捕获异常,然后放入一些代码逻辑以防止Zend捕获它?

我认为问题不在于如何捕获ServiceManager异常

你这样做是错误的:

catch (Exception $e)
将从当前命名空间捕获异常。您需要的是捕获PHP全局异常。 你的问题和这个一样

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

try {
     $hybridAuth = $this->getServiceManager()->get('HybridAuth');
    }
catch (\Exception $e) {
    var_dump('catched');
   }
或通过添加以下内容导入全局php异常:

use \Exception;