22.12.26 18:13 작성
·
1.5K
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
아래 코드는 강의를 들으며 작성한MyHandlerExceptionResolver
입니다.
@Slf4j
public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
try {
if (ex instanceof IllegalArgumentException) {
log.info("IllegalArgumentException resolver to 400");
response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage());
//response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return new ModelAndView();
}
} catch (IOException e) {
log.error("resolver ex", e);
}
return null;
}
}
컨트롤러에서 IlleagalArgumentException
이 발생했을 때, MyHandlerExceptionResolver
가 실행이됩니다. 지금까지 response.sendError()
가 단순히 상태코드를 변경하는 메서드인줄 알았고, 실행 결과 아래 화면을 기대했습니다.
하지만, 아래와 같이 json 형태의 데이터를 응답결과로 돌아았는데요.
단순히 상태코드를 변경하는 'response.setStatus()
와는 다른 뭔가가 있구나' 라는 생각을 하게 됐습니다. response.sendError()
는 response body 에 데이터를 출력하는 일을 추가로 하는건가요?