본문 바로가기
java/spring

spring - error(2)

by rewind 2024. 7. 6.

예외처리 이론

예외처리를 위한 메서드를 작성 -> 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>