Мне нужно понять, как Spring MVC обрабатывает неперехваченные исключения, если приложение не предоставляет обработчика неперехваченных исключений. Может ли сценарий, в котором несколько одновременных запросов вызывают необработанные исключения, привести к утечке или зависанию пула потоков Tomcat?
Как Spring MVC обрабатывает необработанные исключения, возникающие в контроллерах?
comment
Нет, не может. Вы просто получите ошибку 500.
- person JB Nizet   schedule 14.06.2016
comment
@JBNizet Спасибо, так что вы говорите, что Spring MVC предоставляет обработчик исключений Uncaught по умолчанию, который будет перехватывать и предоставлять ответ 500?
- person Abhishek Gupta   schedule 14.06.2016
comment
Нет. Если контроллер или совет не имеют отношения к исключению, оно заканчивается тем, что вызывается методом doXxx() DispatcherServlet, и контейнер отвечает ошибкой 500.
- person JB Nizet   schedule 14.06.2016
Ответы (1)
Вы можете использовать @ControllerAdvice
(подробнее):
Например:
@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() {
....
}
...
}
person
Dekart
schedule
14.06.2016