10.3.1 @ExceptionHandler를 이용한 예외 처리
@ExceptionHandler는 웹 요청에 따라 컨트롤러의 요청 처리 메서드를 실행하는 동안 예외가 발생하면 이를 처리하기 위해 예외 처리 메서드에 사용하며, 형식은 다음과 같습니다.
@ExceptionHandler(value={예외 클래스1.class[,예외 클래스2.class,...]})
public String 메서드 이름() {
...
}
@ExceptionHandler
public String 메서드 이름(예외 클래스 exp) {
...
}
※ 제공 패키지: org.springframework.web.bind.annotation
@ExceptionHandler에서 value 속성은 예외 처리를 담당하는 클래스 이름을 설정하며 value 속성이나 { }를 생략할 수 있습니다. 또한 속성을 생략하고 @ExceptionHandler만 사용하려면 예외 처리 메서드의 매개변수로 예외 처리를 담당하는 클래스가 반드시 설정되어 있어야 합니다.
@ExceptionHandler에서 사용하는 속성은 다음과 같습니다.
▼ 표 10-4 @ExceptionHandler에서 사용하는 요소
요소 |
타입 |
설명 |
value |
Class<? extends Throwable>[] |
@ExceptionHandler가 선언된 메서드가 처리할 예외 클래스입니다. |
@ExceptionHandler를 사용하면 @ResponseStatus 없이 발생한 예외를 처리할 수 있습니다. 또한 컨트롤러 안에 요청 처리 메서드가 발생하는 오류나 예외를 직접 구체화하여 처리할 수 있습니다. 즉, 발생한 예외 정보를 얻을 수 있고, 특정한 뷰 페이지로 이동할 수 있어 사용자가 직접 예외 처리에 응답할 수 있습니다.