예외처리 핸들러 - samkimpepper/giftbug Wiki

GlobalExceptionHandler : 전체 예외처리 핸들러

예외처리를 디테일하게 정의해놓은 클래스를 모아서 처리하는 예외처리 핸들러 GlobalExceptionHandler

RestControllerAdvice 어노테이션

모든 컨트롤러에 대해 전역적으로 발생할 수 있는 예외를 잡아서 처리함.

  • annotations 속성에 컨트롤러 클래스를 인수로 주면 적용 범위를 해당 컨트롤러로 제한 가능.
  • 커스텀 Exception 클래스들을 여기서 관리함.
  • @Order로 순서 지정할 수 있다는데 잘 모르겠음.

ResponseEntityExceptionHandler 상속

  • 커스텀 Exception 클래스를 제외하고 기본적으로는 여기에 정의된 메소드로 예외 처리함.

ExceptionHandler 어노테이션

  • Exception 클래스마다 처리해주는 메소드가 하나씩 있고 메소드마다 @ExceptionHandler를 붙이면 됨.
  • value 속성(생략 가능)으로 Exception 클래스를 인수로 줘야함.
  • 그럼 메소드의 인자로 해당 Exception이 들어옴.

Override

  • handleMethodArgumentNotValid() 등의 오버라이드할 수 있는 메소드가 있는듯. 지금은 딱히 필요성을 모르겠고 나중에 찾아볼 것.

ResponseStatus 어노테이션

  • 커스텀 Exception 클래스에 붙일 수 있음.
  • 해당 Exception이 발생하면 자동으로 ResponseStatus에 정의해놓은 HttpStatus를 response에 등록해서 리턴함.
  • 사실 필요성을 아직 모르겠음. 어차피 전체 예외처리 핸들러에서 내가 미리 정의해놓은 Response 명세대로 리턴하도록 구현해놨고 내가 둘러본 코드들에선 거의 HttpStatus의 코드를 응답에서 적극적으로 활용하진 않던데. 일단 정의해두긴 함.