인프런 커뮤니티 질문&답변

백린이님의 프로필 이미지
백린이

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

@ExceptionHandler

exHandler의 역할에 대해 궁금한 점이 있습니다.

작성

·

292

·

수정됨

0

@Slf4j
@RestController
public class ApiExceptionV2Controller {

    @ResponseStatus(HttpStatus.BAD_REQUEST)
    @ExceptionHandler(IllegalArgumentException.class)
    public ErrorResult illegalExHandler(IllegalArgumentException e) {
        log.error("[exceptionHandler] ex ", e);
        return new ErrorResult("BAD", e.getMessage());
    }

    @ExceptionHandler
    public ResponseEntity<ErrorResult> userExHandler(UserException e) {
        log.error("[exceptionHandler] ex ", e);
        ErrorResult errorResult = new ErrorResult("USER-EX", e.getMessage());
        return new ResponseEntity(errorResult, HttpStatus.BAD_REQUEST);
    }

    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    @ExceptionHandler
    public ErrorResult exHandler(Exception e) {
        log.error("[exceptionHandler] ex ", e);
        return new ErrorResult("EX", "내부 오류");
    }



    @GetMapping("/api2/members/{id}")
    public MemberDto getMember(@PathVariable("id") String id) {

        if (id.equals("ex")) {
            throw new RuntimeException("잘못된 사용자");
        }
        if (id.equals("bad")) {
            throw new IllegalArgumentException("잘못된 입력 값");
        }
        if (id.equals("user-ex")) {
            throw new UserException("사용자 오류");
        }

        return new MemberDto(id, "hello " + id);
    }

    @Data
    @AllArgsConstructor
    static class MemberDto {
        private String memberId;
        private String name;
    }

}

ApiExceptionV2Controller가 위와 같이 구성되어 있는데,

여기서 exHandler 메서드는 fallback 기능을 하는 메서드로 이해하면 될까요?

답변 1

0

안녕하세요. linky dev님, 공식 서포터즈 David입니다.

해당 부분은 본 편 15분45초부터 자세히 설명하고 있으니 참고 부탁드립니다:)

감사합니다.

백린이님의 프로필 이미지
백린이

작성한 질문수

질문하기