-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
RequestDispatcher.ERROR_MESSAGE 빈 문자열
24.02.01 23:34 작성 조회수 120
0
제가 모든 error를 정해진 form에따라 응답하고 싶은데,
어떻게 할까 하다가 방법을 BasicErrorController를 커스텀해서 사용해야겠다 생각했습니다.
CustomErrorController의 코드는 다음과 같습니다.그런데 응답값에 오류 message가 들어가지 않아서
디버깅해봤는데, request안에 attribute안에 jakarta.servlet.error.message에 빈문자열이 들어가있는걸 확인했습니다.
이게 response.sendError(400, "400에러 발생!"); 과 같이 할경우에는 message에 값이 들어가고,
throw new RuntimeException("에러 발생") 과 같이 예외를 던질때만 message에 값이 담기지 않습니다.
도움주시면 감사하겠습니다.
답변을 작성해보세요.
0
김영한
지식공유자2024.02.03
안녕하세요. wnsdud4949님
이런 경우 @ControllerAdvice를 사용하는 것이 적절합니다.
이 방법으로 다시 시도해주세요.
감사합니다.
wnsdud4949
질문자2024.02.06
답변감사합니다.
하나만 더 여쭤보겠습니다.
@ControllerAdvice가 DefaultHandlerExceptionResolver보다 우선순위가 높은데 @ControllerAdvice를 사용할 경우에는 보통 DefaulHandlerExceptionResolver까지 Exception이 전달되지 않도록 @ControllerAdvice에서 모든 Exception에 대한 처리를 하나요?
김영한
지식공유자2024.02.08
안녕하세요. wnsdud4949님
@ControllerAdvice에서 처리하지 못하는 예외는 다음 ExceptionResolver를 사용해서 처리할거에요. 그래서 이 부분은 걱정하지 않으셔도 됩니다.
다만 ControllerAdvice에서 처리한 예외의 경우에는 여기서 끝나겠지요?
감사합니다.
답변 1