Почему это выброшенное исключение дублируется?
Это дополнительный вопрос к этому вопросу, который не очень важен.
Я написал следующий плагин фронт-контроллера:
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()
метод