SpringBoot์์๋ ํน์ ์ํฉ์ ์๋ฌ๊ฐ ๋ฐ์๋ ๊ฒฝ์ฐ ์๋ฌ์ ๋ํ ๋ชจ๋ StackTrace๊ฐ ๋๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค. ์๋ ์ฌ์ง์ฒ๋ผ ๋จ์ํ ํ์ด์ง์ ์๋ฌTrace๊ฐ ๋ง์ด ๋์ค๋ ๋ฐฉ์์ผ๋กํ๋ฉด์ด ๊ตฌ์ฑ๋๋ค.
๊ฑฐ์ฐฝํ ์๋ฌ์ฒ๋ฆฌ๋ฐฉ์์ด ์๋๋ผ,๊ฐ์ฅ ์ฝ๊ฒ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ๋ค.
Try-catch๋ ๋๋ฌด ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ํตํด์ ์ง์์ ์ผ๋ก ์ ์ด์ค์ผํ๊ณ ,ExceptionHandler๋ฑ์ ํตํด์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ณต์กํ๊ธฐ๋ ํด์ Spring Boot์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ Application.properties๋ yamlํ์ผ์ ํตํด์๋ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค.
server:
error:
include-stacktrace: never
include-exception: true
include-binding-errors: always
include-message: always
path:
whitelabel:
enabled: true
ํ๋์ฉ ์์๋ณด๋๋ก ํ์.
include-stacktrace
๋ ๊ตฌ์ฒด์ ์ผ๋ก ์๋ฌ๊ฐ ์ด๋์ฏค์์ ๋ฐ์ํ๋์ง์ ์ผ์ผํ ์ค๋ช ํ๋ ๋ฐฉ์์ด๋ค. ๋ช๋ฒ์งธ ์ค์ฏค์์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ณ , ๊ทธ๋ฐ ์๋ฌ์ ์ ํ๊ฐ ์ด๋๋ก ๋๋ ๊ฒ์ ๋ํด์ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ํ๋ ๋ฐฉ์์ธ๋ฐ, ๋๋ฌด ๋ง์ ์ ๋ณด๊ฐ ๋ ธ์ถ๋๊ธฐ ๋๋ฌธ์, ์ด ์ต์ ์ ๊ฐ๋ฐํ๋ ๋น์์๋ง ํค๊ณ ํ๋ก๋ํธ ์ต์ ์์๋ ๋ฌด์กฐ๊ฑด ๋๋๊ฑธ ์ถ์ฒํ๋ค.include-exception
๋ ์๋ฌ๋ฐ์์ ๊ทธ ์๋ฌ๋ฅผ ํ๋ฉด์ ๋ ธ์ถ์ํฌ์ง์ ๋ํ ์ต์ ์ด๋ค. ์๋ฅผ ๋ค๋ฉด..(()->new IllegalArgumentException("๊ตฌ์ฒด์ ์ธ ์๋ฌ ์ง์นจ"));
์ฒ๋ผ ์๋ฌIllegalArgumentException
๋ฅผ ๋ ธ์ถ์ํฌ ์ ์๋ค.include-binding-errors
: Validation์ ํ ํ, ์ ํจํ์ง ๋ชปํ ๊ฐ์ด ์กด์ฌํ ๋, Error(BindingResult)์ ๊ทธ ๋ด์ฉ์ ๋ด์์ ์ฒ๋ฆฌํ๋ค. ์ฆ, ์ ๋ฌ๋ ๋ฐ์ดํฐ์ ์ ํจ์ฑ์ด ์๋ ๊ฒฝ์ฐ ๋ฐ์ธ๋ฉ ์๋ฌ๋ก ์ฒ๋ฆฌ๋๋๋ฐ ๊ทธ๋ฐ ๊ฒ์ ๋ ธ์ถ์ํฌ์ง์ ๋ํ ๊ฒ.include-message
: ์์์ ๋งํ๋ ๊ฒ์ฒ๋ผ ์์ธ๋ฅผ ๋ ธ์ถ์ํค๋๋ฐ ๊ทธ ์์ธ์ ์์ฑ๋์ด์๋ ๋ฉ์ธ์ง๋ช ์ ๋ ธ์ถ์ํฌ์ง์ ๋ํ ๊ฒ์ด๋ค.path
: ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ Controller path๋ฅผ ์ง์ ํด์ค ์๋ ์๋ค. Error์ ๋ํ Controller๋ฅผ ์ง์ ๊ตฌ์ฑํด์ ๋ชจ๋ ์๋ฌ๋ฅผ ํ ๊ณณ์์ ์ฒ๋ฆฌํ ์๋ ์๋ค.whitelabel enable
: Spring boot๋ฅผ ์ผฐ์๋ฐ ๊ฐ์ฅ ์์ฃผ ๋ณด์ด๋ ํ์ด์ง์ธ whitelabel ์๋ฌ ํ์ด์ง๋ฅผ ์ฌ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ค.
์ด๋ฐ ๋ฐฉ์์ ์ ๋ง ๊ฐ๋จํ๊ฒ ์๋ฌ๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์คํ๋์ด๋ค.
Controller๋ฅผ ํตํด์ ํน์ Try catch๋ฅผ ํตํ ๋ฐฉ์์ ํตํ ์์ธ์ฒ๋ฆฌ์ ๋นํด์ ์ฝ๊ณ ๊ฐํธํ๊ฒ ๋ง๋ค ์ ์์ง๋ง, ๋ํ ์ผํ ์ค์ ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด ๋จ์ ์ด๋ค. ์๋ฅผ ๋ค๋ฉด, API ์๋ต์ ๊ธฐ๋ณธ ํฌ๋ฉง์ด ์๊ณ ๊ทธ ํฌ๋ฉง์ ํตํด Error์ ๋ฌ์ ํด์ผํ๋ ๊ฒฝ์ฐ๋ ์ง๊ธ์ ๋ฐฉ์์ผ๋ก๋ ์ด๋ ต๋ค.
๊ตฌ์ฒด์ ์ผ๋ก ํํํ๊ธฐ ์ํด์๋ ์์ ์ด ์๊ฐํ๋ ์๋ฌ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ง์ถฐ์ ๊ฐ๋จํ๊ฒ ๊ตฌ์ฑํด๋ณด๊ณ , ํ์ฅ์ ์ผ๋ก Controller๋ Excpetion ์ ๋ต์ ํตํด์ ์ฒ๋ฆฌํด๋ณด๋ ์ฐ์ต์ ํ์.
{% embed url="https://blog.advenoh.pe.kr/spring/์คํ๋ง๋ถํธ-๊ธฐ๋ณธ-์ค๋ฅ-ํ์ด์ง-๋ณ๊ฒฝํ๊ธฐ/" %}
{% embed url="https://goddaehee.tistory.com/214" %}