did_story

[Java] ์ž๋ฐ”์—์„œ Checked Exception๊ณผ Uncheck Exception์˜ ์ฐจ์ด์ . ๋ณธ๋ฌธ

BackEnd๐Ÿƒ/Java

[Java] ์ž๋ฐ”์—์„œ Checked Exception๊ณผ Uncheck Exception์˜ ์ฐจ์ด์ .

์–ด์ œ์‹œ์ž‘ 2025. 6. 17. 15:54

์•„๋ฌด ์ƒ๊ฐ ์—†์ด Custom Exception์ด ์ƒ๊ฐ๋‚œ ๋‚˜๋ผ๋ฉด

1. Checked Exception

์ปดํŒŒ์ผ ์‹œ์ ์—์„œ ํ™•์ธ ๋˜๋Š” ์—๋Ÿฌ๋กœ ์ž๋ฐ”์—์„œ๋Š” IOException, SQLException ๋“ฑ์ด ์ด์— ์†ํ•ฉ๋‹ˆ๋‹ค (๋ฐ˜๋“œ์‹œ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์˜ˆ์™ธ). Checked Exception์„ ์œ ๋ฐœํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜์— throws๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœ์ž์—๊ฒŒ ์˜ˆ์™ธ๋ฅผ ์œ„์ž„ํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ try-catch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์˜ˆ์™ธ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. (ํ‘œ์ค€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ, Custom Exception์„ ํ†ตํ•ด์„œ ์ฒ˜๋ฆฌ.)

2. Unchecked Exception

๋Ÿฐํƒ€์ž„ ์‹œ์ ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ด๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฒ˜๋ฆฌ ์—ฌ๋ถ€๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž๋ฐ”์—์„œ๋Š” RuntimeException์„ ์ƒ์†ํ•œ ์˜ˆ์™ธ๋“ค์ด ํ•ด๋‹น๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค์ˆ˜๋‚˜ ์ฝ”๋“œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ⇒ ์ตœ๋Œ€ํ•œ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์งœ์•ผ๊ฒ ์ฃ ? ⇒ ํ•˜์ง€๋งŒ ํ˜น์‹œ๋‚˜ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด Unchecked Exception๋„ ํ‘œ์ค€ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋‚˜, Custom Exception์„ ํ†ตํ•ด์ถฉ๋ถ„ํžˆ ์ •์˜ํ•˜๊ณ  ์ ๊ทน ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค..

๊ฐ๊ฐ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?!

Checked Exception์€ ์„œ๋น„์Šค์™€ ์™ธ๋ถ€ ์‚ฌ์ด์— ์ƒํ˜ธ ์ž‘์šฉ์„ ํ†ตํ•ด์„œ ๋ฐœ์ƒ๋˜๋Š” ์—๋Ÿฌ์ด๋‹ค. ๋กœ๊ทธ์ธ ๋กœ์ง ์ค‘ ์˜ˆ์™ธ, ๋„คํŠธ์›Œํฌ ํ†ต์‹  ์ค‘ ์˜ˆ์™ธ, ํŒŒ์ผ ์ž…์ถœ๋ ฅ ์˜ˆ์™ธ, ์—†๋Š” field์— Data๋ฅผ ์ฃผ์ž…ํ•˜๋ ค๋‹ค๊ฐ€ ์ƒ๊ธด ์˜ˆ์™ธ, Mysql column์ด ๋ฐ›์„ ์ˆ˜ ์—†๋Š” ๊ธธ์ด์˜ ๋ฌธ์ž์—ด์„ ์ฃผ์ž…ํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ์˜ˆ์™ธ ๋“ฑ๋“ฑ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—„์ฒญ ๋งŽ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ํ•˜๋‚˜์”ฉ Custom Exception์„ ์„ค์ •ํ•˜์—ฌ์„œ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค.!

 

Unchecked Exception์€ ์ฝ”๋“œ ์˜ค๋ฅ˜, ๋…ผ๋ฆฌ์  ๊ฒฐํ•จ ๋“ฑ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์‹ค์ˆ˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, null ์ฐธ์กฐ ๋˜๋Š” ์ž˜๋ชป๋œ ์ธ๋ฑ์Šค ์ ‘๊ทผ ๋“ฑ์€ ํ˜ธ์ถœ์ž๊ฐ€ ๋ฏธ๋ฆฌ ์˜ˆ์ธกํ•˜๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๊ธฐ ๋–„๋ฌธ์— Unchecked Exception์œผ๋กœ ๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์ž๋ฐ” ์† Error ์™€ Exception์˜ ์ฐจ์ด.

       Throwable
       /       \
   Error     Exception
               /     \
	  Checked   Unchecked

    1. Error

Error๋Š” Error์€ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ(OutOfMemoryError)์ด๋‚˜ ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(StackOverflowError)์™€ ๊ฐ™์ด ์ผ๋‹จ ๋ฐœ์ƒํ•˜๋ฉด ๋ณต๊ตฌ ํ•  ์ˆ˜ ์—†๋Š” ์‹ฌ๊ฐํ•œ ์˜ค๋ฅ˜์ด๊ณ  ์˜ˆ์ธก์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋…€์„์ด๋‹ค! ์ฆ‰ JVM๋‹จ์˜ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ธ ๊ฒƒ์ด๋‹ค! ๊ฐœ๋ฐœ์ž๊ฐ€ ๋Œ€์ฒ˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋ฉฐ, ํšŒ๋ณต์ด ์–ด๋ ค์šด ์˜ค๋ฅ˜, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณต๊ตฌ๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค.

    2. Exception

Exception์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜ ์ƒํ™ฉ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํšŒ๋ณต ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜ ์ƒํ™ฉ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค