Try-Catch ์ „๋žต

๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋กœ์ง์˜ ํ๋ฆ„์„ ๋Š๊ณ  ์ข…๋ฃŒ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ๋ฌผ๋ก  ์˜ˆ์™ธ๋„ ์žˆ๊ฒ ์œผ๋‚˜, ์ œ 1์›์น™์€ ์ตœ๋Œ€ํ•œ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์ข…๋ฃŒํ•˜๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•  ๊ฒƒ.

  try {

  } catch (Exception e) {
    e.printStackTrace();
}

์œ„ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. ์ตœ์†Œํ•œ์˜ ์–‘์‹ฌ(?)์œผ๋กœ e.printStackTrace()๋ฅผ ํ˜ธ์ถœํ–ˆ์œผ๋‚˜ ์ด๋ฏธ ์—์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‹ค์Œ ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ์‹์˜ try-catch๋Š” ์ตœ๋Œ€ํ•œ ์ง€์–‘ํ•ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ Checked Exception ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ๋กœ ๊ฐ์‹ธ์•ผ ํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ try-catch๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

try {
  business login
} catch (Exception e) {
  e.printStackTrace();
  throw new xxXBusinessLogicException();
}    

์œ„ ์ฝ”๋“œ์—์„œ ๋ณด๋Š” ๋ฐ”์™€ ๊ฐ™์ด try-catch๋กœ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ, Exception() ๋ง๊ณ , ๋” ๊ตฌ์ฒด์ ์ธ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒŒ ์ข‹๋‹ค.

Controller ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

Controller์—์„œ ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฐ’ ๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•˜๊ณ (Service layer์—์„œ ์ž˜๋ชป๋œ ๊ฐ’์ด ์žˆ์œผ๋ฉด ์ •์ƒ์ ์ธ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ ์–ด๋ ต๋‹ค) ์ด์ƒ์ด ์—†์„ ์‹œ์— Service layer๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค Controller์˜ ์ฑ…์ž„์„ ๋‹คํ•˜๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ทธ ์ฑ…์ž„์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‹ค๋ฅธ layer์—๊ฒŒ ์ „๊ฐ€๋˜๋ฉฐ ์ด๋ ‡๊ฒŒ ๋„˜๊ฒจ๋ฐ›์€ ์ฑ…์ž„์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํฐ ๋น„์šฉ์ด ๋“ค๋ฟ๋”๋Ÿฌ, ์œ ์ง€ ๋ณด์ˆ˜ ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์ œ์•ฝ์ด ๋”ฐ๋ฅธ๋‹ค. Controller์˜ ์ค‘์š”ํ•œ ์ฑ…์ž„ ์ค‘ ํ•˜๋‚˜๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฐ’ ๊ฒ€์ฆ์ด๋‹ค. ์Šคํ”„๋ง์€ JSR 303 ๊ธฐ๋ฐ˜ ์• ๋…ธํ…Œ์ด์…˜์œผ๋กœ ๊ฐ’ ๊ฒ€์ฆ์„ ์‰ฝ๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ๋ชจ๋“  ์˜ˆ์™ธ๋Š” @ControllerAdvice์— ์„ ์–ธ๋œ @ExceptionHandler๊ฐ€ ํ•ธ๋“ค๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์— Controller๋Š” ์ž๊ธฐ layer์˜ ์˜ˆ์™ธ๊นŒ์ง€ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๊ทธ๋ƒฅ ๋˜์ ธ๋ฒ„๋ฆฌ๋Š” ํŒจํ„ด์œผ๋กœ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๊ฐœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค.

ํƒœ๊ทธ: ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ