GlobalExceptionHandler - xx10222/selab-todo-list GitHub Wiki
- ์ ์ญ ์ฒ๋ฆฌ -
@ControllerAdvice
- ์ปจํธ๋กค๋ฌ ๋จ์์ ์ฒ๋ฆฌ -
@ExceptionHandler
- ๋ฉ์๋ ๋จ์ ์ฒ๋ฆฌ -
try/catch
Controller๋ฅผ ์์ฑํ ๋ ์์ธ ์ํฉ์ ๊ณ ๋ คํ๋ฉฐ ์ฒ๋ฆฌํ๋ ์์
์ด ๋์ด๋จ์ ๋ฐ๋ผ, Spring MVC์์๋ @ExceptionHandler
์ @ControllerAdvice
๋ฅผ ์ด์ฉํ์ฌ ์ฒ๋ฆฌํ๊ณ ResponseEntity๋ฅผ ์ด์ฉํ์ฌ ์์ธ ๋ฉ์์ง๋ฅผ ๊ตฌ์ฑํ๋ค
-
@Controller
์@RestController
๊ฐ ์ ์ฉ๋ Bean ๋ด์์ ๋ฐ์ํ๋ ์์ธ๋ฅผ ์ก์์ ํ๋์ ๋ฉ์๋์์ ์ฒ๋ฆฌํด์ฃผ๋ ๊ธฐ๋ฅ์ ํ๋ค - Controller๊ฐ ํธ์ถํ๋ Service์์ ๋ฐ์ํ ์์ธ๋ ์ก์๋ธ๋ค
- AOP๋ฅผ ์ด์ฉํ์ฌ ๊ณตํต์ ์ธ ์์ธ์ฌํญ์ ๋ณ๋๋ก @ControllerAdvice๋ฅผ ์ด์ฉํ์ฌ ๋ถ๋ฆฌํ๋ค
-
@ExceptionHandler
๊ฐ ํ๋์ ํด๋์ค์ ๋ํ ๊ฒ์ด๋ผ๋ฉด,@ControllerAdvice
๋ ๋ชจ๋ @Controller, ์ฆ ์ ์ญ์์ ๋ฐ์ํ ์ ์๋ ์์ธ๋ฅผ ์ก์์ฃผ๋ ์ด๋ ธํ ์ด์ ์ด๋ค - ์ฌ๊ธฐ์
@RestControllerAdvice
๋ @ControllerAdvice์ ๊ฐ์ ์ญํ ์ ์ํํ๋ฉฐ @ResponseBody๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ ์๋ ์๋ค - @ControllerAdvice๋ ํด๋น ๊ฐ์ฒด๊ฐ ์คํ๋ง ์ปจํธ๋กค๋ฌ์์ ๋ฐ์ํ๋ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ์กด์ฌ์์ ๋ช ์ํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๊ณ , @ExceptionHandler๋ ํด๋น ๋ฉ์๋๊ฐ ๋ค์ด๊ฐ๋ ์์ธ ํ์ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค
ํ์ค ์์ธ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ์
- ์ปค์คํ ์์ธ์ ์ด๋ฆ๋ง ๋ด๋ ์ด๋ค ์์ธ์ธ์ง ์์๋ณด๊ธฐ ์ข๋ค
- ๊ทธ๋ฌ๋ ํ์ค ์์ธ๋ฅผ ์ฌ์ฉํ๊ณ errorMessage ๋ก ์ค๋ฅ ์ํฉ์ ๋ํ๋ด๋ ์ ๋๋ก๋ ์ถฉ๋ถํ ํํ์ด ๊ฐ๋ฅํ๋ค๋ฉด, ๊ตณ์ด ์ปค์คํ ์์ธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค
- ๋ฐ๋๋ก CustomException์ ๋ฐ๋ ๊ณณ์์ ์ฒ๋ฆฌํ๊ธฐ ์ฝ๋๋ก ์ถ๊ฐ๋ก ์๋ฌ์ ๊ดํ ์ ๋ณด๋ฅผ ๋ฃ์ด์ฃผ๊ฑฐ๋, ์ฌ๋ฌ ํ์ ์ Exception์ด ๋ฐ์ํ ์ ์๋ ์ฝ๋์์ ํ๊ฐ์ง๋ก Exception ํ์ด๋ธก๋ก ๋ฌถ์ด ์ฒ๋ฆฌํ ๋๋ custom exception์ ์ฌ์ฉํ ๋ง ํ๋ค
ํ์ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ ์ฑ์ด ๋์์ง๋ค
-
NullPointerException
: null์ ํ์ฉํ์ง ์๋ ๋ฉ์๋์ null์ ๊ฑด๋์ ๋ -
IndexOutBoundsException
: ๋ฒ์ ๋ฐ์ index์ ์ ๊ทผํ ๋ -
IllegalArgumentException
: ํ์ฉํ์ง ์๋ ๊ฐ์ด ์ธ์๋ก ๊ฑด๋ค์ก์ ๋ -
IllegalStateException
: ๊ฐ์ฒด๊ฐ ๋ฉ์๋๋ฅผ ์ํํ๊ธฐ์ ์ ์ ํ์ง ์์ ์ํ์ผ ๋ -
UnsupportedOperationException
: ์์ฒญ๋ฐ์ ์์ ์ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ ์ผ ๋
์ถ์ฒ
https://w97ww.tistory.com/74
https://springboot.tistory.com/33