작성
·
80
0
질문 1. 오류 처리 흐름을 아래와 같이 이해하였는데 맞는지 여부
BasicErrorController를 활용한 오류 처리 흐름
WAS(여기까지 전파) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외 발생)
WAS(/error) → 서블릿 → BasicErrorController에서 오류 처리 → View or JSON 반환
ExceptionResolver를 활용한 오류 처리 흐름
ExceptionResolver(response.sendError() 처리) ← 필터 ← 서블릿 ← 인터셉터 ← 컨트롤러(예외 발생)
WAS(/error) → 서블릿 → BasicErrorController에서 오류 처리 → View or JSON 반환
질문 2. ExceptionResolver 관련 설명을 아래와 같이 이해하였는데 맞는지 여부
예외 발생 시 서블릿 컨테이너까지 예외가 전달되지 않고, 스프링 MVC의 ExceptionResolver 에서 예외를 처리한다.
-> response.sendError() 가 아닌 예외(Exception)이 WAS에 전달되지 않는다.
WAS 입장에서는 정상 처리된 것이다.
-> response.sendError() 는 WAS 입장에서 정상 처리 된 것으로 인지한다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
kshlove735님, 질문 주신 내용에 대해 답변드리겠습니다.
질문 1: BasicErrorController와 ExceptionResolver를 활용한 오류 처리 흐름
아래의 이해가 맞습니다:
BasicErrorController를 활용한 오류 처리 흐름:
/error 경로로 이동하여 BasicErrorController에서 처리되고, View 또는 JSON 형식으로 결과가 반환됩니다.ExceptionResolver를 활용한 오류 처리 흐름:
ExceptionResolver는 예외 발생 시 예외를 WAS로 전파시키지 않고 직접 처리합니다.response.sendError()를 호출하여 WAS에서는, 처리 후 적절한 경로(/error)로 이동하여 BasicErrorController에서 추가적인 HTTP 응답 처리를 수행하게 됩니다.질문 2: ExceptionResolver 관련 설명
ExceptionResolver는 예외가 서블릿 컨테이너로 전달되기 전에 스프링 MVC 레벨에서 예외를 처리합니다. 이는 ER(예외 해석기)에서 처리하며, response.sendError()처럼 WAS에 직접적인 예외가 전달되지 않는 것이 맞습니다.response.sendError()를 호출하게 되면 WAS에서는 응답이 정상적으로 처리된 것으로 인식하게 되는 것도 맞습니다.해당 내용에 관한 자세한 설명은 Spring Boot와 Spring Framework의 각각의 공식 문서에서 확인하실 수 있습니다. 필요하다면 아래 링크를 통해 추가 자료를 참고해보세요:
- Spring Boot Error Handling
- Spring MVC Exception Handling
질문이 있으시면 언제든지 문의해 주세요. 감사합니다!