스프링이 아닌 순수 서블릿 컨테이너는 예외를 어떻게 처리하는지
서블릿은 다음 2가지 방식으로 예외 처리를 지원한다.
Exception (예외) > 500 에러
response.sendError(HTTP 상태 코드, 오류 메시지)
Exception (예외)
' 그냥 자바에서 '
자바의 메인 메서드를 직접 실행하는 경우 main 이라는 이름의 쓰레드가 실행된다.
실행 도중에 예외를 잡지 못하고 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료된다.
' 웹 애플리케이션에서 '
웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다.
예외가 발생했는데, 어디선가 try ~ catch로 예외를 잡아서 처리하면 아무런 문제가 없다.
만약에 애플리케이션에서 예외를 잡지 못하고, 서블릿 밖으로 까지 예외가 전달되면
WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러(예외발생)
결국 톰캣 같은 WAS 까지 예외가 전달된다.

Exception의 경우 HTTP상태 코드 500을 반환함
500(내부 서버 오류): 서버에 오류가 발생하여 요청을 수행할 수 없다.
아래는 해당 url이 없을때, 톰캣이 제공하는 404오류화면

'김영한님 인강듣고 > 스프링 MVC' 카테고리의 다른 글
| 스프링 부트의 예외 처리 01 (1) | 2024.08.08 |
|---|---|
| 서블릿 예외처리 (0) | 2024.08.07 |
| HTTP요청에서 데이터 전달 (0) | 2024.07.30 |
| 동시 요청 - 멀티 쓰레드 (0) | 2024.07.29 |
| RequestMappingHandlerAdapter, HandlerMethodArgumentResolver, HandlerMethodReturnValueHandler, HttpMessageConverter (1) | 2024.06.05 |