📌 서블릿은 다음 2가지 방식으로 예외처리를 지원한다
Exception : 예외
자바 직접 실행
- 자바의 메인 메서드를 직접 실행하는 경우 main이라는 이름의 쓰레드가 실행된다.
- 실행 도중에 예외를 잡지 못하고, 처음 실행한 main () 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료된다.
웹 애플리케이션
- 웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다.
- 애플리케이션에서 예외가 발생했는데 어디선가 try ~ catch로 예외를 잡아서 처리하면 아무런 문제가 없다.
response.sendError (HTTP 상태 코드, 오류 메시지)
- 이것을 호출한다고 당장 예외가 발생하는것은 아니지만, 서블릿 컨테이너에게 오류가 발생했다는 점을 전달할 수 있다.
- HTTP 상태 코드와, 오류 메시지도 추가할수 있다.
📍 서블릿 예외처리 - 오류 화면 제공
- 서블릿 컨테이너가 제공하는 기본 예외처리 화면은 고객 친화적이지 않다.
- 예를 들어 RuntimeException 예외가 WAS 까지 전달되면, WAS는 오류 페이지 정보를 확인한다. WAS는 지정된 오류페이지를 출력하기위해 "다시" 요청한다.
- 예외가 발생해서 WAS까지 전파된다.
- WAS는 오류 페이지 경로를 찾아서 내부에서 오류 페이지를 호출한다. 이때 오류 페이지 경로를 필터, 서블릿, 인터셉터, 컨트롤러가 모두 다시 호출된다.