【问题标题】:Cannot catch exceptions in Module.php无法在 Module.php 中捕获异常
【发布时间】:2013-11-23 19:08:28
【问题描述】:

我遇到了一个问题,即抛出异常但未在 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 中的代码应该是轻量级的。但是我们必须在执行任何操作之前立即获取一些数据,因为它将包含对要执行的操作至关重要的数据。此数据在第一次访问后被缓存,因此每次其他页面加载都会避免这种开销。

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

【问题讨论】:

标签: php exception exception-handling zend-framework2 try-catch


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 2021-08-07
    • 2021-10-14
    • 2019-11-27
    • 2014-05-02
    • 2017-03-15
    • 2017-09-16
    相关资源
    最近更新 更多