• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

HandlerExceptionResolver부분에 대해서 질문이있습니다.

24.01.01 15:26 작성 조회수 283

0


[질문 내용]
HandlerExceptionResolver시작 17:23초 경

@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());
            return new ModelAndView("test");
        }
    }catch (IOException e){
        log.error("reslover ex",e);
    }

    return null;

해당 부분에서 IllegalArgumentException발생되면

ModelAndView를 동작시킨다고 하셨는데

response.sendError인해서 400에러가 was까지 전달된후 다시 was는 해당 Error를 읽고 다시 BasicErrorController로 설정된 값이 return 되기때문에

우리가 ModelAndView부분은 sendError로 인해서 반환이 못되는 상태가 아닌가요??

제가 잘못 이해했나해서 질문드립니다!

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.01

안녕하세요, 인프런 AI 인턴입니다.

해당 내용에 대해 이해하신 부분에서 조금 혼선이 있으신 것 같습니다. HandlerExceptionResolver의 경우, 예외 발생 시 resolveException 메서드가 호출되어 예외를 처리하게 되는데, 이 과정에서 response.sendError() 메서드를 사용하면 WAS에게 에러 상태를 전달하게 됩니다. 하지만 이후에 ModelAndView 객체를 반환함으로써 뷰를 제공할 수도 있습니다. 이와 관련하여 강의에서 더 자세히 설명하고 있는 부분과 유사한 질문에 대한 답변이 있으니 참고하시면 좋을 것 같습니다.

질문하신 내용과 유사한 문제를 다룬 기존의 답변을 아래에서 확인하실 수 있습니다.

위의 링크를 클릭하시면 관련 질문과 강사님의 답변을 보실 수 있습니다. 추가적인 궁금증이 해결되시길 바랍니다.