inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

HttpServletResponse의 sendError, setStatus 차이

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

[질문 템플릿] 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 에 데이터를 출력하는 일을 추가로 하는건가요?

  • response
  • MVC
  • http
  • spring
  • sendError
호춘 댓글 1 좋아요 0 조회수 1767

@ResponseStatus와 @ExceptionHandler 함께 사용한 부분 질문있습니다ㅠㅠ

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

12:00 ~ @ResponseStatus와 @ExceptionHandler 함께 사용한 부분 설명 관련 두가지 궁금한게 있습니다. 전 시간에 ResponseStatus를 사용하면 ResponseStatusExceptionResolver가 상태 코드를 변경해서 sendError를 발생시킨다고 이해했는데 그럼 sendError가 WAS로 해당 에러를 전달하려고할텐데 그 과정에서 중간에서 @ExceptionHandler가 그 예외를 잡아서 처리함으로써 WAS로 예외가 전달되지 못하고 상태 코드만 변경되고 응답은 처리한데로 정상흐름으로 된다는 건가요..? 그럼 서버 내부적으로 로그를 남긴다던가 하는 용으로 쓰이고 클라이언트에게는 정상적으로 응답하도록 하는 효과가 있는건지요...!

  • 12:00
  • ResponseStatus
  • MVC
  • spring
  • exceptionhandler
  • sendError
afrada123 댓글 1 좋아요 3 조회수 455

인기 태그

인프런 TOP Writers

주간 인기글