2015-09-16 10 views
11

Używam Spring 4 i Tomcat. Problem polega czasem na tym, że muszę rzucić (niestandardowy) wyjątek RuntimeException w moim filtrze (kontrola nie dotarła nawet do kontrolera). Problem polega na tym, że nie wyrzucam wyjątku, który tomcat rozumie, przekształca się w 500 (wewnętrzny błąd serwera). Wierzę, że 403 Forbidden byłoby lepsze niż 500 (dla mojego wyjątku niestandardowego). Przyjrzałem się adnotacjom @ExceptionHandler i @ControllerAdvice. Ale działają tylko wtedy, gdy sterowanie osiągnie kontroler.Jak radzić sobie z wyjątkami umieszczonymi w filtrach?

Obecnie ręcznie ustawiam status na 403 w HTTPResponse w moim filtrze. Czy istnieje lepszy sposób radzenia sobie z tym scenariuszem?

+1

wyjazdu [to SO post] (http://stackoverflow.com/questions/29914717/servlet-filter-specific-exception-handling-in-java). Możesz rozszerzyć filtr i obsłużyć wyjątek w super. –

+0

@TimBiegeleisen - Cóż, od tej pory stosuję podobne podejście :). Dziękuję za wskazanie tego posta. – TheLostMind

+0

@TimBiegeleisen Natknąłem się na podobny problem i opublikowałem rozwiązanie, które może Cię zainteresować https://stackoverflow.com/questions/34595605/how-to-manage-exceptions-thrown-in-filters-in-spring/ 43242424 – Raf

Odpowiedz

1

należy użyć coś takiego

Ustawianie obsługi błędów w web.xml

<error-page> 
    <exception-type>java.lang.RuntimeException</exception-type> 
    <location>/handleExceptionService</location> 
</error-page> 

Więc, kiedy osiągnie swoje usługi, może yo zrobić każdej pojemności chcesz z błędem .

Powodzenia !!!

0
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> 
Powiązane problemy