강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

박시균님의 프로필 이미지
박시균

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

스프링 인터셉터 - 소개

예외처리에 대해서 질문있습니다

작성

·

279

0

뒤에 강의까지 듣고 예외가 발생하고 오류페이지를 띄우는 원리를 이런식으로 이해했습니다.

1. WAS -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러

2. WAS(여기까지 전파) <- 필터 <- 서블릿 <- 인터셉터 <- 컨트롤러(ex예외발생)

3. WAS 오류 페이지 확인

4. WAS -> 필터(x) -> 서블릿 -> 인터셉터(x) -> 컨트롤러(/error/500) -> View

그런데 스프링 인터셉터 예외 그림(7.로그인처리pdf 13p)에서는 예외가 발생하면 

afterCompletion을 실행하고 예외가 WAS로 전달되지 않는다고 그려져있습니다. 

제가 loginController 에서

@GetMapping("/login")

    public String loginForm(@ModelAttribute LoginForm form){

        if(true)

            throw new RuntimeException("예외 발생!");

        return "login/loginForm";

    }

예외를 던져주고 

templates/error/500 을 만들어주고  /login에 접속하였더니

만들어준 500.html이 떴는데요.

이 부분이 이해가 잘 안되네요. 예외가 발생하면 was로 전달되지 않는다고 하였는데 

was로 전달되지 않았으면 만들어준 500.html 이 어떻게 뜨는건지 원리가 궁금합니다 ㅠ

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 박시균님

Q: 스프링 인터셉터 예외 그림(7.로그인처리pdf 13p)에서는 예외가 발생하면 

afterCompletion을 실행하고 예외가 WAS로 전달되지 않는다고 그려져있습니다. 

A: 그림을 잘 보시면 6. 예외 전달이라고 되어 있습니다. 예외는 서블릿에 전달됩니다.

감사합니다.

박시균님의 프로필 이미지
박시균

작성한 질문수

질문하기