작성
·
100
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요 선생님 아주 유익한 강의 잘 듣고 있는 수강생 입니다 ! 항상 감사합니다!
강의에서 인터셉터 중 postHandle은 컨트롤러 또는 다른 비즈니스 로직에서 예외가 발생한 경우 postHandle이 호출되지 않는다고 하셨습니다.
근데 위 사진을 보시면 postHandle이 호출되고 로그가 나와있습니다.
/error-ex는 postHandle이 호출되지 않는 것을 확인했는데
/error-404, /error-500은 postHandle이 호출됩니다.
이유가 궁금합니다 !!
답변 2
0
안녕하세요. 병훈님
error-ex의 경우 실제 자바 예외가 발생합니다.
error-404의 경우 실제 예외가 발생하는 것이 아니라, response.sendError()를 호출합니다.
이 경우 요청의 흐름은 정상 처리됩니다. 다만 서블릿에서 에러 상태를 확인하고 오류 페이지를 보여주도록 처리됩니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
병훈님의 질문에 대해 답변드리겠습니다. 질문하신 내용은 “/error-500을 호출하였는데 postHandle이 호출되는 이유?“와 관련되어 있습니다. 인터셉터의 postHandle
메서드가 예외 발생 시 호출되지 않는다는 기본적인 동작 원리와 관련 있으며, 특별히 “/error-404”와 “/error-500” 페이지 호출 시 postHandle
이 왜 호출되는지에 대한 궁금증을 가지고 계십니다.
제공해주신 정보와 강의 내용을 바탕으로 유사한 질문과 그에 대한 답변을 참고 자료로 제공하고자 합니다. “controller에서 redirect처리 하는 경우 왜 이렇게 되는지 궁금합니다!”라는 질문에서는 postHandle
과 afterCompletion
이 호출되는 과정 및 그 이유에 대해 설명하고 있습니다.
이와 비슷한 맥락에서 병훈님의 질문에도 답변할 수 있는데, 일반적으로는 컨트롤러 내에서 예외가 발생하면 postHandle
이 호출되지 않습니다. 하지만, 에러 처리 과정에서 별도로 정의된 에러 페이지로의 요청은 새로운 요청 처리로 간주되기 때문에 이러한 요청에 대해서는 postHandle
이 호출될 수 있습니다. 즉, 에러 발생 시 해당 에러에 매핑된 컨트롤러로 처리가 진행될 경우, 그 과정이 일반적인 요청 처리 흐름으로 취급되어 postHandle
호출이 가능합니다.
다만, 정확한 동작 원리와 상황은 스프링 MVC의 설정, 인터셉터의 구현 방법, 에러를 처리하는 컨트롤러의 동작 방식 등에 따라 달라질 수 있습니다. 따라서 병훈님의 실제 코드 내용과 구성에 대해 더 구체적인 분석이 필요할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
질문 의도와 관련이 없는 답변 같습니다...
저는 궁금한게 클라이언트가 호출한 URI(error/404)가 컨트롤러에서 예외를 발생시키는데 postHandle 메서드가 호출되는지가 궁금한겁니다...
AI 선생님 말고 다른 선생님 답변 부탁드립니다 ㅠㅠㅠ