티스토리 뷰

Web

Spring의 Exception 처리

tose33 2023. 2. 11. 21:24

스프링에서 Exception 이 처리되는 원리

 

요청이 오면 처리되는 흐름은 다음과 같다. 

 

  • WAS 에서 request가 온다 -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 

 

만약 컨트롤러에서 익셉션이 발생하면, 익셉션을 갖고 반대로 되돌아간다.

그래서 WAS가 익셉션 발생을 알게된다.

그러면 WAS는 해당 익셉션에 대하여 지정된 경로로 다시 요청을 보낸다.

 

익셉션 마다 다시 요청을 보낼 경로를 지정할수 있다.

예를들어 404 익셉션에 대해서는 /error-404 경로를 지정했다면

WAS가 404 익셉션을 받았을때 /error-404 경로로 다시 요청을 보낸다.

 

즉 우리는 각 익셉션 마다 에러 페이지를 만들어놓고, 익셉션이 터졌을때 각각의 에러 페이지로 보낼수 있는 것이다. 

 

 

 

스프링부트가 제공하는 BasicErrorController 

위처럼 익셉션 처리는 서블릿이 제공하는 Filter스프링이 제공하는 Interceptor로 할 수 있다.

 

그런데 스프링 부트에서는 기본적으로 WAS로 에러 발생이 전달되면 "/error" 경로로 재 요청이 되도록 되어있다.

또한 스프링 부트는 BasicErrorController 를 자동으로 등록하는데 BasicErrorController가 받는 경로가 "/error" 이다. 

 

BasicErrorController는 자신만의 룰이 있다.

예를들어 뷰 이름이 4xx.html 이라면 400번대 에러는 모두 해당 뷰 경로로 이동된다.

또한 자신만의 처리 우선순위가 있는데, templates/error/ 를 먼저 처리하고, 이후 static/error/ , 이후 error.html 이다.

 

즉 우리는 그냥 에러 페이지만 만들어놓고 /error 경로에 넣어놓으면 된다.

 

 

 

출처:

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard

'Web' 카테고리의 다른 글

무한 스크롤, 서버에서 데이터 갖고오기  (0) 2023.04.10
byte 배열로 저장된 이미지 뷰에서 디스플레이  (0) 2023.04.03
Filter  (0) 2023.02.09
JPA 정리  (0) 2022.12.26
정리  (0) 2022.07.28
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함