Как обрабатывать исключения, выбрасываемые в фильтры?
Я использую Spring 4 и Tomcat. Иногда мне приходится бросать (собственный) RuntimeException в мой фильтр (элемент управления даже не дошел до контроллера). Проблема в том, что я не выбрасываю исключение, которое понимает tomcat, оно преобразуется в 500 (внутренняя ошибка сервера). Я считаю, что 403 Forbidden будет лучше, чем 500 (для моего обычного исключения). Я просмотрел аннотации @ExceptionHandler
и @ControllerAdvice
. Но они работают только в том случае, если управление достигает контроллера.
На данный момент я вручную устанавливаю статус 403 в HTTPResponse
в моем фильтре. Есть ли лучший способ справиться с этим сценарием?
Ответы
Ответ 1
вы должны использовать что-то вроде этого
Установка обработчика ошибок в web.xml
<error-page>
<exception-type>java.lang.RuntimeException</exception-type>
<location>/handleExceptionService</location>
</error-page>
Итак, когда вы достигаете своего сервиса, yo может делать все, что захочет, с ошибкой.
Удачи!!!
Ответ 2
You can add in web.xml
<error-page>
<error-code>404</error-code>
<location>/error-404.html</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/access_denied.html</location>
</error-page>