[CowAPI] 21. Error Exception Handle

준돌·2022년 7월 5일
0

오늘의 Cow

목록 보기
26/45

1. 문제

  • 에러 발생시 메세지를 custom 하여 body에 담아서 클라이언트에게 전달 하려고 합니다.

2. 원인

  • JVM 이 Exception을 처리 하기 전에 catch 해야합니다.

3. 해결방법

  • 전역 처리
  • 컨트롤 하단에서 처리
  • 메소드 단위 처리

4. 코드

  • 저는 다음과 장점으로 전역 처리를 합니다.
    • 하나의 클래스로 모든 컨트롤러에 대해 전역적으로 예외 처리가 가능함
    • 직접 정의한 에러 응답을 일관성있게 클라이언트에게 내려줄 수 있음
    • 별도의 try-catch문이 없어 코드의 가독성이 높아짐
    • 망나니개발자
// 1. Controller [Exception을 지켜보고 있다가 발생 시 catch 합니다.]

@RestControllerAdvice
public class ExceptionHandleController {
    ...

    @ExceptionHandler({ResponseStatusException.class})
    public ResponseEntity<ExceptionDto> ExceptionHandler(ResponseStatusException e) {
        return exceptionService.exceptionHandling(e);
    }
}
// 2. Service [Exception에 대해서 custom 합니다.]

@Service
public class ExceptionHandleService {
    public ResponseEntity<ExceptionDto> exceptionHandling(ResponseStatusException e) {
        ExceptionDto exceptionDto = ExceptionDto.builder()
                .code(e.getRawStatusCode())
                .message(e.getReason())
                .httpStatus(e.getStatus())
                .build();

        return new ResponseEntity<>(exceptionDto, exceptionDto.getHttpStatus());
    }
profile
눈 내리는 겨울이 좋아!

0개의 댓글