Gymterview
junior

Как обработать в приложении исключения, выброшенные другим сервлетом

Обработка исключений в сервлетах выполняется через маппинг страниц ошибок в web.xml. Можно указать обработчик как для конкретных HTTP-кодов, так и для типов Java-исключений. Контейнер перенаправит запрос на указанный ресурс (сервлет или JSP), который сформирует понятный ответ пользователю.

Пример
<error-page>
    <error-code>404</error-code>
    <location>/AppExceptionHandler</location>
</error-page>

<error-page>
    <exception-type>javax.servlet.ServletException</exception-type>
    <location>/AppExceptionHandler</location>
</error-page>

В сервлете-обработчике ошибок доступны атрибуты запроса с информацией об исключении: javax.servlet.error.exception, javax.servlet.error.message, javax.servlet.error.request_uri. Это позволяет логировать ошибку и показать пользователю информативную страницу вместо стандартного стек-трейса.

В Spring MVC обработка ошибок реализована через @ExceptionHandler и @ControllerAdvice, что значительно удобнее XML-конфигурации.

На собеседовании: упомяните, что в production никогда нельзя показывать стек-трейс пользователю — это уязвимость безопасности. Сервлет-обработчик ошибок должен логировать детали и возвращать пользователю generic-сообщение.