Skip to content

Latest commit

ย 

History

History
55 lines (31 loc) ยท 3.49 KB

springboot-error.md

File metadata and controls

55 lines (31 loc) ยท 3.49 KB

SpringBoot ๊ฐ„๋‹จํ•œ Error์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

๊ฑฐ์ฐฝํ•œ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ• ๋ง๊ณ ...

SpringBoot์—์„œ๋Š” ํŠน์ •์ƒํ™ฉ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ๋ ๊ฒฝ์šฐ ์—๋Ÿฌ์— ๋Œ€ํ•œ ๋ชจ๋“  StackTrace๊ฐ€ ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋‹จ์ˆœํ•œ ํŽ˜์ด์ง€์™€ ์—๋ŸฌTrace๊ฐ€ ๋งŽ์ด ๋‚˜์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœํ™”๋ฉด์ด ๊ตฌ์„ฑ๋œ๋‹ค.

์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ํ‚ค๋ฉด ์ด ํ™”๋ฉด์„ ๊ฐ€์žฅ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฑฐ์ฐฝํ•œ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ,๊ฐ€์žฅ ์‰ฝ๊ฒŒ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

Application.yaml์„ ํ†ตํ•œ properties๋ฅผ ํ†ตํ•ด์„œ ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ฒŒ ์—๋Ÿฌ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋ณด์ž.

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

ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

  1. include-stacktrace ๋Š” ๊ตฌ์ฒด์ ์œผ๋กœ ์—๋Ÿฌ๊ฐ€ ์–ด๋””์ฏค์—์„œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€์— ์ผ์ผํžˆ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋ช‡๋ฒˆ์งธ ์ค„์ฏค์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ๊ทธ๋Ÿฐ ์—๋Ÿฌ์˜ ์ „ํŒŒ๊ฐ€ ์–ด๋””๋กœ ๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ, ๋„ˆ๋ฌด ๋งŽ์€ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด ์˜ต์…˜์€ ๊ฐœ๋ฐœํ•˜๋Š” ๋‹น์‹œ์—๋งŒ ํ‚ค๊ณ  ํ”„๋กœ๋•ํŠธ ์˜ต์…˜์—์„œ๋Š” ๋ฌด์กฐ๊ฑด ๋„๋Š”๊ฑธ ์ถ”์ฒœํ•œ๋‹ค.
  2. include-exception๋Š” ์—๋Ÿฌ๋ฐœ์ƒ์‹œ ๊ทธ ์—๋Ÿฌ๋ฅผ ํ™”๋ฉด์— ๋…ธ์ถœ์‹œํ‚ฌ์ง€์— ๋Œ€ํ•œ ์˜ต์…˜์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด.. (()->new IllegalArgumentException("๊ตฌ์ฒด์ ์ธ ์—๋Ÿฌ ์ง€์นจ")); ์ฒ˜๋Ÿผ ์—๋Ÿฌ IllegalArgumentException๋ฅผ ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  3. include-binding-errors: Validation์„ ํ•œ ํ›„, ์œ ํšจํ•˜์ง€ ๋ชปํ•œ ๊ฐ’์ด ์กด์žฌํ•  ๋•Œ, Error(BindingResult)์— ๊ทธ ๋‚ด์šฉ์„ ๋‹ด์•„์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฆ‰, ์ „๋‹ฌ๋œ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋ฐ”์ธ๋”ฉ ์—๋Ÿฌ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š”๋ฐ ๊ทธ๋Ÿฐ ๊ฒƒ์„ ๋…ธ์ถœ์‹œํ‚ฌ์ง€์— ๋Œ€ํ•œ ๊ฒƒ.
  4. include-message: ์œ„์—์„œ ๋งํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ์˜ˆ์™ธ๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๋Š”๋ฐ ๊ทธ ์˜ˆ์™ธ์— ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ๋ฉ”์„ธ์ง€๋ช…์„ ๋…ธ์ถœ์‹œํ‚ฌ์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค.
  5. path: ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•  Controller path๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. Error์— ๋Œ€ํ•œ Controller๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•ด์„œ ๋ชจ๋“  ์—๋Ÿฌ๋ฅผ ํ•œ ๊ณณ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  6. 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" %}