2016-06-14 3 views
0

애플리케이션에서 명시 적으로 제공하는 캐치되지 않는 예외 핸들러가없는 경우 Spring MVC가 캐치되지 않은 예외를 처리하는 방법을 이해해야한다. 포착되지 않은 예외를 발생시키는 여러 동시 요청이 Tomcat의 스레드 풀에 누출되거나 중단 될 수있는 시나리오에 영향을 미칠 수 있습니다.컨트롤러에서 발생하는 캐치되지 않는 예외를 Spring MVC가 처리하는 방법

+0

아니, 할 수 없습니다. 500 오류가 발생합니다. –

+0

@JBNizet 감사합니다. 그렇다면 Spring MVC가 500 응답을 가로 채고 제공 할 기본 Uncaught 예외 처리기를 제공한다는 것입니다. –

+0

아니요 컨트롤러 또는 조언이 예외를 처리하지 않으면 DispatcherServlet의 doXxx() 메소드에 의해 처리되고 컨테이너가 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() { 
     .... 
    } 

    ... 

} 
관련 문제