- HTML 화면 오류일경우 단순히 5xx, 4xx 관련된 오류 화면을 보여주면된다.
- API 오류일경우 예외 상황에 따라 단순히 오류 화면을 보여주는 것이 아니라, 세밀한 제어가 필요하다.
- API 예외 처리시 ModelAndView를 반환 하지 않아도된다.
- 다른 컨트롤러에서 예외를 서로 다른 방식으로 처리해야한다.
- 결론 : 스프링은 API 예외 처리 문제를 해결하기 위해
@ExceptionHandler
어노테이션을 제공한다. (실무에서 API 예외처리는 대부분 이 기능 사용)- (API 오류일 경우 Json 형태로 그대로 반환)
- (작성한 Controller 내에서만 작동한다)
정리 :@ExceptionHandler
어노테이션 선언하고, 해당 컨트롤러에서 처리하고 싶은 예외를 지정해주면 된다.
@RestControllerAdvice
을 사용해서 예외를 깔끔하게 처리할수있었다. 정상코드와 예외 처리 코드가 하나의 컨트롤러에 섞여있어 @RestControllerAdvice 사용해서 분리할수 있다.
대상 컨트롤러를 패키지경로, 타겟 컨트롤러로 지정해줄수있다)