无法捕获Module.php中的异常

无法捕获Module.php中的异常,php,exception,exception-handling,zend-framework2,try-catch,Php,Exception,Exception Handling,Zend Framework2,Try Catch,我遇到了一个异常被抛出但未在Module.php中捕获的问题。引发异常的代码包装在try/catch中。没有什么特别的事情发生,所以我假设ZF2有一个不允许在这里捕获异常的怪癖和/或原因 代码如下(根据需要简化): 为什么没有捕捉到异常 在一个理想的世界里,有一种方法可以抓住这个例外。但是,如果这是不可能的,或者过于复杂而不值得付出努力,那么在页面加载过程中尽早获取此数据(无论数据来源如何)的替代过程将是值得的 meta 我知道Module.php中的代码应该是轻量级的。但我们必须在执行任何操作

我遇到了一个异常被抛出但未在Module.php中捕获的问题。引发异常的代码包装在try/catch中。没有什么特别的事情发生,所以我假设ZF2有一个不允许在这里捕获异常的怪癖和/或原因

代码如下(根据需要简化):

为什么没有捕捉到异常

在一个理想的世界里,有一种方法可以抓住这个例外。但是,如果这是不可能的,或者过于复杂而不值得付出努力,那么在页面加载过程中尽早获取此数据(无论数据来源如何)的替代过程将是值得的

meta

我知道Module.php中的代码应该是轻量级的。但我们必须在执行任何操作之前立即获取一些数据,因为它将包含对要执行的操作至关重要的数据。此数据在第一次访问后缓存,因此每隔一次页面加载将避免此开销


我也在谷歌上搜索过,但显然没有其他人经历过,询问过,或者记录过

这段代码在模块类中非常适合我:

public function onBootstrap(MvcEvent $e)
{
    try {
        // exception is thrown
        throw new \Exception('My exception here');
    }
    catch (\Exception $e) {
        echo $e->getMessage();
        exit;
    }
}
它显示异常消息并退出。 调查正在发生的事情的一种方法是使用。
只需在模块中添加一个断点,看看ZF在做什么。

我的假设是,在内部,另一个地方触发并捕获了一个不同的异常,ZF2创建了一个响应对象并返回-ZF2毕竟有内部错误处理。获取此数据的另一种方法是Zend的内置记录器:
public function onBootstrap(MvcEvent $e)
{
    try {
        // exception is thrown
        throw new \Exception('My exception here');
    }
    catch (\Exception $e) {
        echo $e->getMessage();
        exit;
    }
}