https://github.com/GreenPai/Exception
스프링이 아닌 순수 서블릿 컨테이너는 어떻게 처리하는지 알아보자.
서블릿은 다음 2가지 방식으로 예외를 처리한다.
자바의 메인 메서드를 직접 실행하는 경우 ‘main’ 이라는 쓰레드가 실행된다.
실행 도중에 예외를 잡지 못하고 처음 실행한 ‘main’ 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료된다.
웹 애플리케이션은 사용자 요청별로 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다.
애플리케이션에서 예외가 발생했는데, 어디선가 try ~ catch로 예외를 잡아서 처리하면 아무런 문제가 없다. 그런데 만약에 애플리케이션에서 예외를 잡지 못하고, 서블릿 밖으로 까지 예외가 전달하면 어떻게 동작할까?
WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러(예외발생)