예외처리 이론
예외처리를 위한 메서드를 작성 -> ExceptionHandler를 붙인다
jsp페이지에서 Exception처리 하면 모델에 담지 않아도 됨!
@ControllerAdvice -> 전역 예외처리 클래스 작성 가능(패키지 지정 가능)
-> 예외처리에만 사용하는것은 아니다
예외처리 메서드가 중복된경우 컨트롤러 내의 예외처리 메서드가 우선순위를 가진다(가까운 쪽에서 처리)
패키지 지정하지 않을시 모든 패키지, 지정하면 해당 패키지에만
@ResponseStatus
응답 메시지의 상태코드를 변경할 때 사용
1. 예외처리 메서드
200 코드를 바꿔야 할 때
2. 예외클래스 앞에 적용(사용자 정의)
500 -> 400의 경우에만 생각한다
상태코드별 뷰 매핑 -> web.xml
예외 종류별 뷰매핑 -> servlet-context.xml에 등록
<%@ page contentType="text/html;charset=utf-8" isErrorPage="true"%>
isErrorPage값을 true로 설정하면 상태코드가 500으로 기본설정 된다
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
에러처리 디폴트 전략
- 컨트롤러 메서드 내에서 try-catch로 처리
- 컨트롤러에 @ExceptionHandler메서드 처리
- @ControllerAdvice클래스의 @ExceptionHandler 메서드가 처리
- 예외 종류별로 뷰 지정 (servlet-context.xml)- SimpleMappingExceptionResolver
- 응답 상태 코드별로 뷰 지정(web.xml) <error-page>