자바 코드에서는 예외처리를 할 때, try-catch문이 빠질 수 없는데 spring은 어떻게 전역 예외 처리를 통해서 try-catch없이 예외처리를 하는 것일까요?
try-catch
- 문제가 될 코드를 try안에 넣습니다.
- error나 exception이 발생하면, 준비되어 있던 catch문이 exception을 잡습니다.
전역예외처리
- controller로 들어온 데이터를 통해 해당하는 로직들이 돕니다.
- exception이 발생하면, controller 앞단에 준비되어 있던 @ControllerAdvice에서 exception에 맞는 @ExceptionHandler가 exception을 잡습니다.
-> 따라서, try-catch는 존재합니다. 다만, 형태가 변경되어 사용중입니다!
-> 중앙집중화된: @ControllerAdvice가 합니다.
@ExceptionHandler
@ControllerAdvice
다형성으로 만들어진 exception을 던졌을 때, 상위클래스에 해당하는 ExceptionHandler만 존재한다면, 자식 exception은 잡히지 않습니다!