• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

HttpServletResponse의 sendError, setStatus 차이

22.12.26 18:13 작성 조회수 1.17k

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 에 데이터를 출력하는 일을 추가로 하는건가요?

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요. 호춘님

sendError는 서블릿 컨테이너에 실제 오류가 발생했다고 알려주는 역할을 수행합니다.

감사합니다.