ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 애플리케이션 예외
    공부/spring 2023. 5. 4. 01:24

    GlobalExceptionAdvice 기능 추가 1

    • 실습 프로젝트에 포함된 GlobalExceptionAdvice 클래스의 handleBusinessLogicException() 메서드에서 클라이언트에게 [그림 h-5]와 같이 ErrorResponse를 전송할 수 있도록 추가 구현하세요.
    • MemberService의 findMember() 메서드에서 특정 예외를 던지도록 구현해 두었으니 MemberService는 별도로 건드릴 부분이 없습니다.
        @ExceptionHandler(BusinessLogicException.class)
        public ResponseEntity handleBusinessLogicException(BusinessLogicException e) {
            final ErrorResponse response = ErrorResponse.of(e.getExceptionCode());
            return new ResponseEntity<>(response,HttpStatus.valueOf(e.getExceptionCode().getStatus()));
        }

    GlobalExceptionAdvice 기능 추가 2

    • HttpRequestMethodNotSupportedException을 처리하기 위한 handleHttpRequestMethodNotSupportedException() 메서드를 구현하세요.
    • MemberController의 postMember() 핸들러 메서드를 POST가 아닌 PATCH로 변경한 후 요청 전송 시, 아래와 같은 에러 응답 및 HTTP Status를 받을 수 있어야 합니다.
        @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
        public ResponseEntity handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e){
            final ErrorResponse response=ErrorResponse.of(HttpStatus.METHOD_NOT_ALLOWED);
            return new ResponseEntity(response, HttpStatus.valueOf(response.getStatus()));
        }

    GlobalExceptionAdvice 기능 추가 3

    • NullpointerException 등과 같이 개발자가 구현 상의 실수로 발생하는 Exception을 처리하기 위한 handleException() 메서드를 구현하세요.
    • 구현 후, MemberController의 deleteMember() 핸들러 메서드를 DELETE로 요청 전송 시, 아래와 같은 에러 응답 및 HTTP Status를 받을 수 있어야 합니다.
    • MemberService의 deleteMember() 메서드에는 의도적으로 NullpointerException이 발생하도록 구현이 되어 있는 상태입니다.
        @ExceptionHandler
        public ResponseEntity handleException(Exception e){
            final ErrorResponse response = ErrorResponse.of(HttpStatus.INTERNAL_SERVER_ERROR);
            return new ResponseEntity<>(response, HttpStatus.valueOf(response.getStatus()));
        }

     

    public static ErrorResponse of(HttpStatus status){
            return new ErrorResponse(status.value(), status.name(), null, null);
        }
        //HttpStatus 객체를 이용하여 ErrorResponse 객체를 생성하는 정적 메서드
        //HttpStatus 객체에서 HTTP요청 및 응답에서 사용되는 HTTP상태 코드 값을 정의하고 있다
        //status.value() : HTTP상태 코드의 정수 값 반환
        //status.name() : 상태 코드의 문자열이 반환
        //ErrorResponse 생성자에 전달하여 새로운 ErrorResponse객체를 만들어 반환하는 것
        //ErrorResponse 클래스는 api요청 처리 중 발생하는 예외나 오류 상황에서 클라이언트에게 전달하는 응답 객체를 담당

    ErrorResponse 클래스 일부분..

    이런식으로 수정을 해줘야함

    '공부 > spring' 카테고리의 다른 글

    개프 하기 전 개념학습  (0) 2023.06.05
    프록시 서버  (0) 2023.06.02
    Mapper  (0) 2023.05.03
    DTO  (0) 2023.05.01
    Controller  (0) 2023.04.28
Designed by Tistory.