본문 바로가기
김영한님 인강듣고/스프링 MVC

서블릿 예외처리 - 시작

by doriver 2024. 8. 1.

스프링이 아닌 순수 서블릿 컨테이너는 예외를 어떻게 처리하는지

서블릿은 다음 2가지 방식으로 예외 처리를 지원한다.

Exception (예외)   >  500 에러   

response.sendError(HTTP 상태 코드, 오류 메시지)

 

Exception (예외)

' 그냥 자바에서 '

자바의 메인 메서드를 직접 실행하는 경우 main 이라는 이름의 쓰레드가 실행된다.
실행 도중에 예외를 잡지 못하고 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료된다.

' 웹 애플리케이션에서 '

웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다.
예외가 발생했는데, 어디선가 try ~ catch로 예외를 잡아서 처리하면 아무런 문제가 없다. 

 

만약에 애플리케이션에서 예외를 잡지 못하고, 서블릿 밖으로 까지 예외가 전달되면
WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러(예외발생)
결국 톰캣 같은 WAS 까지 예외가 전달된다.

 

Exception의 경우 HTTP상태 코드 500을 반환함

500(내부 서버 오류): 서버에 오류가 발생하여 요청을 수행할 수 없다.

 

아래는 해당 url이 없을때, 톰캣이 제공하는 404오류화면