Spring
스프링에서 Exception 핸들러 매핑하기
jayden-lee
2019. 7. 25. 16:50
728x90
@ExceptionHandler
WelcomeController 클래스에 있는 두 메서드는 모두 @ExceptionHandler
어노테이션을 붙였습니다. 첫 번째 handle
메서드는 CustomException 예외 처리 전용 메서드이며, 두 번째 handleDefault
메서드는 일반 예외 처리 메서드 역할을 합니다. 두 메서드 모두 에러 상황에 따라 맞는 렌더링 할 뷰 이름을 반환하고 있습니다.
@ExceptionHandler는 특정 컨트롤러 안에서 예외가 발생한 경우에만 예외를 매핑하는 문제점이 있습니다.
@Controller
public class WelcomeController {
@ExceptionHandler(CustomException.class)
public String handle(CustomException e) {
return "customException";
}
@ExceptionHandler()
public String handleDefault(Exception e) {
return "error";
}
}
@ControllerAdvice
@ControllerAdvice
어노테이션은 범용적인 예외 처리를 하는 클래스에 추가합니다. 클래스 레벨에 @ControllerAdvice 어노테이션을 추가하고, 각 예외 상황에 맞게 처리해야 하는 메서드에는 @ExceptionHandler 어노테이션을 추가합니다.
@ControllerAdvice
public class ExceptionHandlingAdvice {
@ExceptionHandler(CustomException.class)
public String handle(CustomException e) {
return "customException";
}
@ExceptionHandler()
public String handleDefault(Exception e) {
return "error";
}
}