Почему это выброшенное исключение дублируется?

Это дополнительный вопрос к этому вопросу, который не очень важен.

Я написал следующий плагин фронт-контроллера:

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

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

Где $monitor - это экземпляр пользовательского класса ведения журнала БД (расширяющий Zend_Log).

В методе журнала Monitor я зацикливаюсь на массиве Zend_Exceptions, возвращаемых функцией $response->getException().

Для целей тестирования я через исключение в действии:

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

Большинство вещей работает как положено, Исключение записывается в базу данных.

Вопрос

Но это написано дважды. Зачем?

1 ответ

Решение

Потому что диспетчерский цикл вызывается дважды. Сначала для текущего действия, а затем для по умолчанию:error:error:) Поместите журнал в dispatchLoopShutdown() метод

Другие вопросы по тегам