[오답노트] ErrorResponse, ControllerAdvice

ch3224.bin · December 2, 2021

Error에 대한 일관성 있는 리턴 타입

ErrorResponse 객체를 만들어 놓고, 엉뚱하게 String을 반환하려고 했었다.

  • as is
    if (bindingResult.hasErrors()) {
    String errorMessage = getErrorMessage(bindingResult);
    return ResponseEntity.badRequest().body(errorMessage);
    }
    
  • to be
    if (bindingResult.hasErrors()) {
    return ResponseEntity.badRequest().body(ErrorResponse.of(bindingResult));
    }
    

ControllerAdvice의 Exception Type을 제한하기

예를 들어 리소스를 못찾을때 각 리소스 마다 XXXNotFoundException을 만들어 던진다고 하자

  • UserNotFoundException
  • PostNotFoundException

ControllerAdvice에서 ExceptionHandler에 CustomException을 모두 등록하지 말고, NotFoundException이라는 것을 대표로 등록하고 각 파생되는 것들을 상속해서 만들자.

Twitter, Facebook