작성
·
26
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
처음 만든 ExceptionResolver에서 sendError를 하고 두번째에서는 sendError없이 response를 만들어서 빈 modelAndView를 리턴해줬는데
둘의 차이를 복잡하게 sendError 하는 과정없이 그냥 modelAndView에 주고싶은 응답값을 줘서 바로 처리하게끔 하자 정도로 이해하면 맞을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
J LEE님, 질문해 주신 내용에 대해 답을 드리겠습니다. 두 번째 ExceptionResolver에서 sendError
메서드를 사용하는 대신, 빈 ModelAndView
를 반환하면서 예외를 처리하는 방법에 대해 질문해 주셨는데요. 이는 sendError
없이도 응답을 처리할 수 있는 차이점을 이해하는 데 도움이 됩니다.
첫 번째 ExceptionResolver의 sendError
사용: sendError
메서드는 HTTP 상태 코드를 설정하고 특정 에러를 서블릿 컨테이너에 전달하여 에러 페이지를 트리거합니다. 이 경우, 초기에는 ModelAndView가 반환되지만, 실제로는 서버가 error들을 별도로 처리하게 됩니다. 이는 서버의 오류 처리 흐름을 조금 더 자동화하고, 에러에 대해 사용자에게 특정 페이지를 보여줄 때 유용합니다.
두 번째 ExceptionResolver의 빈 ModelAndView
반환: 반면, 두 번째 방법에서는 response.setStatus
와 직접적인 응답의 콘텐츠와 헤더를 설정하고, 빈 ModelAndView
를 반환하는 방식을 택했습니다. 이것은 WAS(Wide Application Server)가 특정 에러 페이지를 따로 처리하는 것을 막고, 우리가 원하는 커스텀 응답을 사용자에게 즉시 전달하도록 합니다.
이 두 가지 방법의 차이는 바로 서버의 기본 에러 처리 흐름에 의존할 것인가 아니면 우리가 원하는 특정 처리를 즉각 실행할 것인가로 이해할 수 있습니다. 보다 직접적이고 응답의 제어권을 유지하기 위해 두 번째 방법을 사용하기도 합니다.
이와 관련된 유사 질문과 답변을 통해 내용을 더 깊게 이해하실 수 있습니다:
- 예외를 여기서 마무리하기: 이 질문에서는 HandlerExceptionResolver
에서 예외를 마무리하는 방법과 sendError의 사용 여부에 따른 차이를 다룹니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.