본문 바로가기
공부/프로그래밍

[Spring] 익셉션 처리(@ControllerAdvice 사용)

by demonic_ 2017. 5. 1.
반응형

3.2 버전부터 추가된 기능으로써 이 기능을 사용하면 지정된 패키지 아래의 Exception은 모두 이쪽을 거치게 됩니다.



// 아래처럼 패키지를 지정하면 해당 패키지 아래에서 발생하는 Exception만 캐치한다.
@ControllerAdvice(basePackages = {"com.test.controller.web"})
public class TestExceptionHandler{
	@ExceptionHandler(Exception.class)  // 이런식으로 익셉션 종류별로 처리를 둘 수 있다.
	public void handleException(Exception e){
		System.out.println("exception ...");
	}

	@ExceptionHandler(RuntimeException.class)  // 이런식으로 익셉션 종류별로 처리를 둘 수 있다.
	public ModelAndView handleRuntimeException(RuntimeException e){
		ModelAndView view = new ModelAndView("RuntimeExceptionHandler");
		System.out.println("RuntimeException ... ");
		view.addObject("errCd", "999");
		
		return view;
	}
}



클래스에  @ControllerAdvice를 선언해 주고 각 메서드 마다 @ExceptionHandler를 달아 놓은 상태에서 어떤 익셉션을 처리할 것인지 설정해주면 된다.


이후 핸들범위에 포함되는 패키지에서 개발자가 익셉션을 담아 던지면 해당 메세지를 각 핸들러 메소드에서 확인이 가능하다.


리턴값은 void 뿐 아니라 ModelAndView 까지 다양하게 리턴할 수 있다.

반응형

댓글