1

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

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

class Module
{
    public function onBootstrap(MvcEvent $e)
    {
        // Get service manager, etc.

        // Set up some environment stuff

        try {
            // exception is thrown
        }
        catch (\Exception $e) {
            echo $e->get_message();
            exit;
        }
    }
}

为什么异常没有被捕获?

在理想的世界中,有一种方法可以在这里捕捉到这个异常。但是,如果这是不可能的,或者太复杂以至于不值得付出努力,那么在页面加载过程中尽早获取此数据(无论来源)的替代过程将不胜感激。

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

我也用谷歌搜索过这个,但显然没有其他人经历过这个,询问过它,或者记录它。

4

1 回答 1

2

这段代码在模块类中对我来说很好:

public function onBootstrap(MvcEvent $e)
{
    try {
        // exception is thrown
        throw new \Exception('My exception here');
    }
    catch (\Exception $e) {
        echo $e->getMessage();
        exit;
    }
}

它显示异常消息并退出。调查正在发生的事情的一种方法是使用xdebug 进行逐步调试。只需在您的模块中添加一个断点,然后查看 ZF 正在做什么。

于 2013-11-12T08:32:34.747 回答