
순수 서블릿 컨테이너의 예외처리
애플리케이션에서 예외가 발생하면 try~catch로 잡아야하지만 예외를 잡지 못하고
서블릿 밖으로 까지 예외가 전달되면 어떻게 될까?
스프링이 아닌 순수 서블릿 컨테이너는 예외를 어떻게 처리하는지 알아보자.

일단 스프링 부트가 제공하는 기본 예외 페이지를 꺼둬야한다.
예외페이지를 안끄면 요런 페이지가 나온다. 순수 서블릿의 예외처리를 확인하기 위해서는 설정을 꺼야한다.

이제 설정을 껐다면 예외 처리를 어떻게 하는지 확인해보자.
총 2가지 방법으로 처리한다.
1. Exception(예외)


tomcat이 기본으로 제공하는 오류 화면을 볼수있다.
Exception 에러 처리 로직

예외가 발생하면 WAS 까지 전파 된다.
2. response.sendError(HTTP 상태 코드, 오류 메시지)

오류가 발생했을 때 HttpServletResponse 가 제공하는 sendError 라는 메서드를 사용할 수 있다.
이 메서드를 사용하면 HTTP 상태 코드와 오류 메시지도 추가할 수 있다.
sendError 에러 처리 로직

response.sendError() 를 호출하면 response 내부에는 오류가 발생했다는 상태를 저장해둔다.
그리고 서블릿 컨테이너는 고객에게 응답 전에 response 에 sendError() 가 호출되었는지 확인한다.
그리고 호출되었다면 설정한 오류 코드에 맞추어 기본 오류 페이지를 보여준다.
여기서 중요한 점은 서블릿이 기본으로 제공하는 화면은 굉장히 불친절 하다는 점이다. 의미있는 오류 화면을 생성해보자
'Spring > Exception Handling' 카테고리의 다른 글
| @ExceptionHandler (0) | 2023.11.06 |
|---|---|
| 예외처리 ) API 예외 처리(미완료) (0) | 2023.04.25 |
| 예외처리 ) 서블릿 컨테이너의 예외처리 2 - 오류 페이지 제공 (0) | 2023.03.27 |