전역예외처리는 어떻게 동작할까?

노지환·2021년 11월 26일
0

내꺼로 만들기

목록 보기
5/5

궁금증의 시작

자바 코드에서는 예외처리를 할 때, try-catch문이 빠질 수 없는데 spring은 어떻게 전역 예외 처리를 통해서 try-catch없이 예외처리를 하는 것일까요?

비교

try-catch

  1. 문제가 될 코드를 try안에 넣습니다.
  2. error나 exception이 발생하면, 준비되어 있던 catch문이 exception을 잡습니다.

전역예외처리

  1. controller로 들어온 데이터를 통해 해당하는 로직들이 돕니다.
  2. exception이 발생하면, controller 앞단에 준비되어 있던 @ControllerAdvice에서 exception에 맞는 @ExceptionHandler가 exception을 잡습니다.

-> 따라서, try-catch는 존재합니다. 다만, 형태가 변경되어 사용중입니다!

쉽고 중앙집중화된 exception handling의 사용방법

  1. 예외에 맞는 @ExceptionHandler를 만들어놓습니다.
  2. @ExceptionHandler를 관리할 수 있는 @ControllerAdvice를 만들어 놓습니다.

-> 중앙집중화된: @ControllerAdvice가 합니다.

조금 더 자세히

@ExceptionHandler

  • return type은 void, String, ModelAndView, Map, JSON이 가능합니다.

@ControllerAdvice

  • class 안에 exception에 맞는 exception handler가 있을 때 적합합니다.
  • 이 클래스는 모든 컨트롤러에 대한 도우미 역할을 합니다!
  • 컨트롤러에서까지 잡히지 않은 예외가 throw될 때 적절한 @ExceptionHandler에 도착합니다.

+

다형성으로 만들어진 exception을 던졌을 때, 상위클래스에 해당하는 ExceptionHandler만 존재한다면, 자식 exception은 잡히지 않습니다!

profile
기초가 단단한 프로그래머 -ing

0개의 댓글