인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

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

HandlerExceptionResolver 시작

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

해결된 질문

작성

·

426

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 인턴입니다.

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

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

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

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기