-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
@ExceptionHandler 메서드에서 ResponseEntity 반환 시 상황 질문
21.03.16 18:03 작성 조회수 653
0
안녕하세요 백기선 강사님! 덕분에 강의를 완주하고 사이드프로젝트로 api 서버를 만들고 있습니다. restapi를 만들고있는데 view기반이랑 조금은 달라서 찾아볼게 많네요.!!ㅎ
익셉션핸들러 처리 중 질문거리가 생겨서 달려왔습니다.
@RestControllerAdvice
public class ControllerExceptionHandler {
@ExceptionHandler(IllegalArgumentException.class)
@ResponseStatus(value=HttpStatus.BAD_REQUEST)
public ResponseEntity<ErrorResponse> handleIllegalArgumentException(IllegalArgumentException e){
System.out.println(e.toString());
ErrorResponse response = ErrorResponse.builder()
.status(HttpStatus.BAD_REQUEST.value())
.message(e.getMessage())
.build();
return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
}
@Getter
@Builder
public class ErrorResponse {
@Builder.Default
private LocalDateTime timestamp = LocalDateTime.now();
private String message; //예외 메시지 저장
@Builder.Default
private String code = ""; // 예외를 세분화하기 위한 사용자 지정 코드
private int status; // HTTP 상태 값 저장 400, 404, 500 등
}
익셉션핸들러에 대해 위처럼 작성하였고
핸들러메서드에서 return으로 ResponseEntity 가 반환되고, body부로 ErrorResponse 객체 전달하고 있습니다.
ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler com.itevent.iteventapi.common.error.ControllerExceptionHandler#handleIllegalArgumentException
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
위와 같은 에러가 났었는데 결론은 ErrorResponse에 @Getter를 붙이지 않아서 에러가 났고 @Getter 붙여서 해결하였는데요.
어떤 이유로 게터가 없어서 에러가 났는지 짐작이 안되서 질문드립니다. ErrorResponse객체에 getter가 왜 필요한건가요?
(jackson변환할 때 getter가 필요..? POJO 객체의 필수조건? 다양한 생각은 드는게 확신이 안서서 질문드립니다.. 아시면 답변 부탁드리겠습니다 :) )
답변을 작성해보세요.
답변 1