Exception 无法捕获Zend框架异常

Exception 无法捕获Zend框架异常,exception,zend-framework2,try-catch,Exception,Zend Framework2,Try Catch,我有一个基于基本框架的Zend Framework应用程序。因此有一个public/index.php文件,其中启动了应用程序: Zend\Mvc\Application::init(require 'config/application.config.php')->run(); 我的问题是,在那里的某个地方抛出了一个PDO异常,而我无法捕获它。我已尝试在try/catch块中包装run语句,但没有成功: try { Zend\Mvc\Application::init(requ

我有一个基于基本框架的Zend Framework应用程序。因此有一个
public/index.php
文件,其中启动了应用程序:

Zend\Mvc\Application::init(require 'config/application.config.php')->run();
我的问题是,在那里的某个地方抛出了一个PDO异常,而我无法捕获它。我已尝试在try/catch块中包装
run
语句,但没有成功:

try {
    Zend\Mvc\Application::init(require 'config/application.config.php')->run();
} catch (\Exception $e) {
    die("Caught!");
}catch (\PDOException $e) {
    die("Caught!");
}
但这并没有捕获异常,它仍然显示通用的“出错”页面。事实上,我也尝试过抛出泛型异常,同样,它们也无法被捕获。我还尝试设置了一个
set\u exception\u处理程序
函数,但仍然没有成功


你知道如何解决这个问题吗

好的,我找到了问题所在。ZF2有自己的非标准方法来处理异常。在ZF中,异常不仅仅是异常,它们是“MvcEvents”,它们不是用普通的try/catch块捕获的,而是需要通过应用程序对象、通过“事件管理器”、通过“attach”方法、通过“event_DISPATCH_ERROR”常量“附加”到(我想它们可以称之为“EXCEPTION”,但这太容易了)

因此,解决方案是:

函数zendFrameworkErrorHandler(Zend\Mvc\MvcEvent$事件){
echo“Got exception:”(字符串)$event->getParam('exception');
}
$application=Zend\Mvc\application::init(需要'config/application.config.php');
$application->getEventManager()->attach(Zend\Mvc\MvcEvent::EVENT_DISPATCH_ERROR,'zendFrameworkErrorHandler');
$application->run();