Подтвердить что ты не робот

Как обрабатывать исключения, выбрасываемые в фильтры?

Я использую Spring 4 и Tomcat. Иногда мне приходится бросать (собственный) RuntimeException в мой фильтр (элемент управления даже не дошел до контроллера). Проблема в том, что я не выбрасываю исключение, которое понимает tomcat, оно преобразуется в 500 (внутренняя ошибка сервера). Я считаю, что 403 Forbidden будет лучше, чем 500 (для моего обычного исключения). Я просмотрел аннотации @ExceptionHandler и @ControllerAdvice. Но они работают только в том случае, если управление достигает контроллера.

На данный момент я вручную устанавливаю статус 403 в HTTPResponse в моем фильтре. Есть ли лучший способ справиться с этим сценарием?

4b9b3361

Ответ 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>