2016-06-14 2 views
0

Необходимо понять, как Spring MVC обрабатывает неперехваченные исключения, если нет обработчика исключенных исключений, явно предоставленного приложением. Может ли сценарий, при котором несколько одновременных запросов, все из которых производят исключение, не позволяет исключить утечку или зависание пула потоков Tomcat.Как Spring MVC обрабатывает нечеткие исключения, возникающие в контроллерах

+0

Нет, она не может. Вы получите только 500 ошибок. –

+0

@JBNizet Спасибо, так что вы говорите, что Spring MVC делает proivde обработчиком исключения Uncaught по умолчанию, который перехватит и предоставит ответ 500? –

+0

Нет. Если контроллер или совет не имеют отношения к исключению, он оказывается брошенным методом doXxx() DispatcherServlet, и контейнер отвечает 500 ошибкой –

ответ

0

Вы можете использовать @ControllerAdvice (more details):

Например:

@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() { 
     .... 
    } 

    ... 

}