inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링과 JPA 기반 웹 애플리케이션 개발

에러 핸들러 및 뷰 추가

@ExceptionHandler 메서드에서 ResponseEntity 반환 시 상황 질문

835

송유진

작성한 질문수 11

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 객체의 필수조건? 다양한 생각은 드는게 확신이 안서서 질문드립니다.. 아시면 답변 부탁드리겠습니다 :) )

exceptionhandler ResponseEntity thymeleaf JPA spring-boot spring java

답변 1

1

백기선

안녕하세요.

응답 본문으로 넘겨준 ErrorResponse를 JSON으로 변경할 때 JavaBeans 스팩에 따르는 (getter, setter) 메소드를 통해 정보를 가져오려고 하는데 getter가 없으니 아무것도 꺼낼 수가 없다보니 응답 본문을 판단을 못해서 에러가 난걸로 보이네요. 실제로는 디버거를 통해 어떤 과정을 통해 저런 에러가 나는지 살펴보시면 더 좋겠죠.

감사합니다.

0

송유진

정말 감사드립니다! 기초가 많이 부족했네요 ㅠㅠ 감사합니다~

Study 개설하는 로직에 대해서 궁금점이 있습니다.

0

55

1

앱 재시작 후 회원가입

0

103

1

app.host 관련 질문이 있습니다

0

97

1

강의 버전 정보

0

125

1

event, study 참조

0

219

2

비밀번호 변경 로직 질문있습니다.

0

135

1

프로필 수정 처리 merge 질문입니다.

0

106

1

회원가입 성공 후 redirect이동시 권한 질문

0

491

3

HtmlEmailService 개발하다 생긴 의문입니다

0

249

2

postgreSql 연결하여 JPA 를 통해 테이블 생성시 ZONE 테이블 생성에서 에러가 납니다

0

430

2

수업질문 [긴급] 로그인안되는 문제 말씀해주시는 부분 반영해서 최종 질문드립니다

0

260

2

[긴급-재업로드]수업질문 로그인 안 되는 문제

0

235

1

[긴급] 로그인해도 네비게이션 바가 안 바뀌고 있습니다!! 로그인이 안 됩니다 도와주세요

0

277

1

cropper 오류 문제로 질문드립니다..

0

286

2

authentication관련 질문...

0

495

2

모임참가 취소 할때 로직 질문

0

350

3

안녕하세요 기선님 질문이있습니다..

0

229

1

HTML코드 및 강의 중간자료들

0

679

3

springSecurity

0

521

2

버전 질문입니다.

0

302

1

부트스트랩, css

0

353

2

영속성 컨텍스트 질문

0

248

2

다시 강의를 보니 드는생각..

0

351

2

5:50에 나오는 HTML코드는 어디서 찾을 수 있나여?

0

313

1