반응형

먼저 SpringFramework를 3.2버전 이상 사용하시는 분만 보시기 바랍니다.

(ControllerAdvice가 3.2버전때 만들어졌습니다.) 

 

@ControllerAdvice는 @Controller 나 @RestController(4.0부터 지원)에서 발생하는 작업을 캐치해주는 기능을 가지고 있습니다.

(특정 컨트롤러만 캐치하는 것도 가능.. 4.0부터 지원이라네요. ControllerAdvice Annotation Documentation 참조) 

저는 이것을 에러핸들링 용도로 사용해보았습니다. 

 

클래스 위에 @ControllerAdvice를 붙여주고 어떤 Exception을 캐치할 것인지, 

내부 메소드를 선언하여 메소드 상단에는 @ExceptionHandler(Exception.class) 와 같이 붙여줍니다.

최종적으로 아래와 같은 모습이 됩니다. 

 

@ControllerAdvice
@RestController 
public class ControllerAdviceHandler {
       @ExceptionHandler(NullPointerException.class)
       public Object nullPointerHandle(HttpServletRequest request, Exception e) {
            return "null"; 
       } 
        
       @ExceptionHandler(Exception.class)
       public Object exceptionHandle(HttpServletRequest request, Exception e) {
            return "exception"; 
       }

}


 

Exception의 가장 상위인 Exception을 핸들링하고, 그 하위인 NullPointerException을 핸들링하는 메소드가 따로 있는 경우,

NullPointerException은 NullPointerException 핸들링 메소드로 들어가서 처리가 됩니다. 

반응형
,