• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

RequestDispatcher.ERROR_MESSAGE 빈 문자열

24.02.01 23:34 작성 조회수 120

0

제가 모든 error를 정해진 form에따라 응답하고 싶은데,

어떻게 할까 하다가 방법을 BasicErrorController를 커스텀해서 사용해야겠다 생각했습니다.

CustomErrorController의 코드는 다음과 같습니다.스크린샷 2024-02-01 오후 11.25.08.png그런데 응답값에 오류 message가 들어가지 않아서스크린샷 2024-02-01 오후 11.30.17.png

디버깅해봤는데, request안에 attribute안에 jakarta.servlet.error.message에 빈문자열이 들어가있는걸 확인했습니다.스크린샷 2024-02-01 오후 11.25.59.png

이게 response.sendError(400, "400에러 발생!"); 과 같이 할경우에는 message에 값이 들어가고,스크린샷 2024-02-01 오후 11.32.50.png

throw new RuntimeException("에러 발생") 과 같이 예외를 던질때만 message에 값이 담기지 않습니다.

도움주시면 감사하겠습니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. wnsdud4949님

이런 경우 @ControllerAdvice를 사용하는 것이 적절합니다.

이 방법으로 다시 시도해주세요.

감사합니다.

wnsdud4949님의 프로필

wnsdud4949

질문자

2024.02.06

답변감사합니다.

하나만 더 여쭤보겠습니다.

@ControllerAdvice가 DefaultHandlerExceptionResolver보다 우선순위가 높은데 @ControllerAdvice를 사용할 경우에는 보통 DefaulHandlerExceptionResolver까지 Exception이 전달되지 않도록 @ControllerAdvice에서 모든 Exception에 대한 처리를 하나요?

안녕하세요. wnsdud4949님

@ControllerAdvice에서 처리하지 못하는 예외는 다음 ExceptionResolver를 사용해서 처리할거에요. 그래서 이 부분은 걱정하지 않으셔도 됩니다.

다만 ControllerAdvice에서 처리한 예외의 경우에는 여기서 끝나겠지요?

감사합니다.