пользовательская страница ошибки – не может попасть в обработчик

Я пытаюсь добавить свои пользовательские страницы. Я использую Kohana 3.3. В официальной документации указано, что я должен оверлеировать обработчик метода собственного класса Kohana_Exception . Это довольно легко сделать, я сделал это. Теперь я ожидаю, что Кохана будет вызывать этот метод каждый раз, когда возникает исключение или ошибка. Но это не так. Я обнаружил 2 блока catch, где исключение попадает внутрь метода execute_request класса Kohana_Request_Client_Internal .

Первый улов

 catch (HTTP_Exception $e) { // Get the response via the Exception $response = $e->get_response(); } 

Второй улов

 catch (Exception $e) { // Generate an appropriate Response object $response = Kohana_Exception::_handler($e); } 

Как вы можете видеть, ни один из блоков catch не вызывает метод handler .

Установка собственного обработчика исключений set_exception_handler имеет никакого эффекта, поскольку применяется только к неперехваченным исключениям, а исключения, такие как 404 , выбрасываются и попадают.

Однако проблем с ошибками во время выполнения нет. Этот блок ловит их и явно вызывает метод overriden handler .

 if (Kohana::$errors AND $error = error_get_last() AND in_array($error['type'], Kohana::$shutdown_errors)) { // Clean the output buffer ob_get_level() AND ob_clean(); // Fake an exception for nice debugging Kohana_Exception::handler(new ErrorException($error['message'], $error['type'], 0, $error['file'], $error['line'])); // Shutdown now to avoid a "death loop" exit(1); } 

Итак, мой вопрос: как мне настроить все, чтобы создать пользовательскую страницу ошибок для Exception и HTTP_Exception?

PS. Я могу отключить HTTP_Exception_404 и HTTP_Exception_500, чтобы отобразить мою страницу пользовательских ошибок, но я не думаю, что это лучший вариант, поскольку он может работать для этих двух, но переопределение всех возможных HTTP_Exceptions – не лучший способ.

PS2. Или я могу установить собственное пользовательское представление в bootstrap.php :

 Kohana_Exception::$error_view = 'custom_error.tpl'; 

Также не нравится это решение.