2016-06-14 5 views
0

Sie müssen verstehen, wie Spring MVC nicht abgefangene Exceptions behandelt, wenn es keinen nicht abgefangenen Exception-Handler gibt, der explizit von der Anwendung bereitgestellt wird. Kann in einem Szenario, in dem mehrere gleichzeitige Anforderungen alle nicht abgefangenen Ausnahmen auslösen, sich der Threat-Pool des Tomcat auslaufen lassen oder hängen bleiben.Wie behandelt Spring MVC nicht abgefangene Exceptions in Controllern

+0

Nein, es kann nicht. Sie erhalten nur einen Fehler von 500. –

+0

@JBNizet Vielen Dank, also was Sie sagen, ist, dass Spring MVC einen standardmäßigen Uncaught-Exception-Handler bereitstellt, der die 500-Antwort abfängt und bereitstellt? –

+0

Nein. Wenn der Controller oder ein Ratgeber die Ausnahme nicht behandelt, wird er von der DispatcherServlet-Methode doXxx() ausgelöst, und der Container antwortet mit dem Fehler 500. –

Antwort

0

Sie können @ControllerAdvice (more details) verwenden:

Zum Beispiel:

@ControllerAdvice 
public class ControllerExceptionHandler { 

    @ExceptionHandler(value = AccessDeniedException.class) 
    public ModelAndView accessDeniedError(HttpServletResponse response) { 
     response.setStatus(HttpServletResponse.SC_FORBIDDEN); 
     return new ModelAndView("/403"); 
    } 

    @ExceptionHandler({SQLException.class,DataAccessException.class}) 
    public ModelAndView databaseError() { 
     .... 
    } 

    ... 

} 
Verwandte Themen