为什么这个抛出的异常重复?

时间:2011-03-20 15:19:12

标签: php zend-framework exception-handling zend-controller-plugin

这是this question的后续问题,这并不重要。

我编写了以下前端控制器插件:

public function postDispatch(Zend_Controller_Request_Abstract $request)
{
    $response = $this->getResponse();
    $monitor = Zend_Registry::get('monitor');

    if ($response->isException())
    {
        $monitor->log($response);
    }
}

其中$ monitor是自定义DB日志记录类的实例(扩展Zend_Log)。

在Monitor的log方法中,我循环遍历$ response-> getException()返回的Zend_Exceptions数组。

出于测试目的,我通过动作中的异常:

throw new Zend_Exception('the big test', 555);

大多数东西按预期工作,异常被写入数据库。

问题

但是,它写了两次。为什么呢?

1 个答案:

答案 0 :(得分:3)

因为调度循环被调用两次。首先是当前操作,然后是默认值:error:error :)将日志放入dispatchLoopShutdown()方法