해결된 질문
작성
·
46
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
섹션 8에서 컨트롤러에서 response.sendError()을 사용해서 WAS까지 오류 정보를 전달 하는 것으로 생각했습니다.
그런데 섹션 9를 공부하면서 ExceptionResolver 코드를 확인해보면 결국 내부적으로 response.sendError() 를 호출한 다는 것을 알게 되었습니다.
이는 response.sendError()를 사용하는 것이 WAS까지 오류 정보를 전달하는 역할을 하는 것이 아니라고 이해하면 될까요? 그렇다면 어떻게 위 그림의 sendError흐름이 만들어지는 걸까요
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
response.sendError()
메소드는 HTTP 상태 코드와 함께 클라이언트(브라우저 등)에 오류 응답을 직접 보내는 역할을 합니다. 그리고 이 메소드가 호출되면, 설정된 오류 페이지로 요청이 전달되어 오류 페이지에서 해당 오류를 처리하게 됩니다. 따라서 response.sendError()
는 WAS까지 오류 정보를 전달하는 것이 아니라, 오류가 발생했을 때 클라이언트에게 특정 HTTP 상태 코드와 함께 오류 페이지로 안내하는 역할을 합니다.
섹션 8에서 보셨듯이, 오류 처리 순서는 다음과 같습니다: WAS → 필터 → 서블릿 → 인터셉터 → 컨트롤러. 이 과정은 오류 처리의 일반적인 흐름을 나타내며, 여기서 response.sendError()
를 사용하면, 이후 오류 페이지로의 이동을 처리하게 됩니다.
Spring Framework에서 제공하는 ExceptionResolver
는 어플리케이션 내에서 발생한 예외를 해결하고 처리하는 구성 요소입니다. ExceptionResolver
가 내부적으로 response.sendError()
를 호출할 수 있으며, 이는 오류 처리를 보다 세밀하게 제어할 수 있는 방법을 제공합니다. 예를 들어, @ExceptionHandler
를 통해 특정 예외를 잡아 해당 메서드에서 response.sendError()
를 호출하여 클라이언트에게 오류 상태 코드와 메세지를 보낼 수 있습니다.
결국, response.sendError()
의 호출은 WAS까지 오류 정보를 전달하는 것이 아니라, 발생한 오류에 대해 특정한 오류 페이지나 상태 코드로 응답을 하도록 합니다. 그리고 이는 스프링이 제공하는 보다 복잡한 오류 처리 메커니즘과 함께 구현될 수 있습니다.
이해를 돕기 위한 참고 자료로 Spring Boot의 공식 문서 중 오류 처리와 관련된 부분을 링크합니다:
Spring Boot Reference Documentation - Error Handling