Содержание
Обязательным условием любого уважающего себя сайта является корректная обработка HTTP-ошибок, а не отображения вместо них стандартной страницы с информацией об ошибке и ее описанием в стандартном для языка Java вида. В этой серии статей описывается несколько способов обработки как HTTP-ошибок, так и исключений. В конце статьи будет приведен исходник приложения, демонстрирующего/ обработку ошибок и исключений.
Также иногда появляются ситуации, когда веб-сервер обязан возвращать только код ошибки без какой-либо дополнительной информации. В этой ситуации также необходимо отлавливать HTTP-ошибки.
Если Вы знакомы с спецификацией сервлетов, то уже знаете, что контейнеры сервлетов могут обрабатывать исключения и HTTP-ошибки, используя простую конфигурацию в файле web.xml. Эта конфигурация может выглядеть следующим образом:
<!-- HTTP-error -->
<error-page>
<error-code>404</error-code>
<location>page-not-found.jsp</location>
</error-page>
<!-- Exception -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>uncaught-error.jsp</location>
</error-page>
Разберемся для начала, в чём разница между HTTP-ошибкой и исключениями.
HTTP-ошибки - это ошибки, которые описаны спецификацией RFC2616 и не являются исключением как таковым. Spring не отлавливает подобные ошибки, но есть возможность генерировать любую из них, используя код, подобный приведенному ниже:
HttpServletResponse response
// ... some code
response.sendError( httpErrorCode );
Ниже список возможных HTTP-ошибок (наиболее известные из них: 404, 500, 501, 503.):
Исключения (Exception) - второй тип ошибок, который можно указать в файле web.xml. В отличии от HTTP-ошибок, контейнер сервлетов возвращает страницу в случае если получено указанное исключение (в примере - java.lang.Exception), а не ошибка HTTP протокола.
Несколько причин, почему стоит использовать Spring при обработке ошибок:
В следующих трёх статьях будет описано три способа обработки ошибок:
@ExceptionHandler в Spring и обработка ошибок | > |