[Java] ์˜ˆ์™ธ์ฒ˜๋ฆฌ

์ž๋ฐ”๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋…ผ๋ฆฌ์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด, ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
์ž๋ฐ”๋Š” ์˜ˆ์™ธ์— ๋˜๊ฒŒ ์ข€ ์ง‘์ฐฉ์„ ๋งŽ์ด ํ•˜๋Š” ํŽธ์ด๋‹ค.

์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š”๊ฑด ๊ฐ„๋‹จํ•˜๋‹ค.
throw ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ˆ์™ธ๊ฐ€ ๋‚ ๋ผ๊ฐ„๋‹ค.
throw์˜ ๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ๋Š”๊ฑด Throwable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ Exception ํด๋ž˜์Šค๋‚˜ ๊ทธ ์„œ๋ธŒํด๋ž˜์Šค๋“ค ์ •๋„๋‹ค. image

image ๊ทผ๋ฐ ์ž๋ฐ”์—์„  ๋Œ€๋ถ€๋ถ„์˜ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ธฐ๋งŒ ํ•˜๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๋‚ธ๋‹ค.

์ž๋ฐ”์˜ ์˜ˆ์™ธ๋Š” uncheck ์˜ˆ์™ธ์™€ check ์˜ˆ์™ธ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ณดํ†ต ๋Œ€๋ถ€๋ถ„์˜ ์˜ˆ์™ธ๋Š” check ์˜ˆ์™ธ๋ผ์„œ. ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ์€ ๋ฌด์กฐ๊ฑด try-catch๋กœ ๊ฐ์‹ธ์•ผ ํ•œ๋‹ค.
uncheck ์˜ˆ์™ธ๋กœ๋Š” ๋„ํฌ์ธํ„ฐ์˜ˆ์™ธ, ๋ฐฐ์—ด๋ฒ”์œ„์ดํƒˆ ๋“ฑ์ด ์žˆ๋‹ค.

์—ฌํŠผ try-catch๋ฌธ์€ ์ด๋ ‡๋‹ค.
try
{
**ย ย ย  ...**
}
catch(์˜ˆ์™ธํƒ€์ž…1 ์ธ์ž๋ช…)
{
**ย ย ย  ...**
}
catch(์˜ˆ์™ธํƒ€์ž…2 ์ธ์ž๋ช…)
{
**ย ย ย  ...**
}
...
try๋ฌธ์—” ๋’ค๋”ฐ๋ผ์˜ค๋Š” catch๋ฌธ์ด ๋ฌด์กฐ๊ฑด ํ•˜๋‚˜ ์ด์ƒ์€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๊ทผ๋ฐ ๋ญ. ๋ชจ๋“  ์˜ˆ์™ธ๋Š” Exception์ด๋‚˜ ๊ทธ ์„œ๋ธŒํด๋ž˜์Šค๋‹ˆ, Exception์œผ๋กœ ๋ฐ›์œผ๋ฉด ์ „๋ถ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜๋Š” ์˜ˆ์™ธ๋ฅผ ํ•˜๋‚˜ ๋˜์ง€๊ณ  ๋ฐ›๋Š” ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋‹ค. image

image

์ด๋ฒˆ์—” ์˜ˆ์™ธ๋ฅผ ํ•˜๋‚˜ ์ •์˜ํ•ด์„œ ์จ๋ณด๊ฒ ๋‹ค.
๋Œ€์ถฉ ์ƒ์œ„ ์ƒ์„ฑ์ž ์ดˆ๊ธฐํ™”๋งŒ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. image

image ๊ตฌํ˜„์€ ๋ญ ํ•ญ์ƒ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๋‹ค.
๊ทธ๋ž˜์„œ ์ด๋ฆ„์„ ์ž˜ ์ง“๋Š”๊ฒŒ ์ค‘์š”ํ•˜๋‹ค.

2๊ฐ€์ง€ ์ด์ƒ์˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ์“ด๋‹ค. image

image catch๋ฌธ์€ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋Œ€์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์Šˆํผํด๋ž˜์Šค๋ฅผ ์•„๋ž˜์— ๋‘ฌ์•ผํ•œ๋‹ค.


throws ํ‚ค์›Œ๋“œ
ํ˜น์€, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑธ ๋ฉ”์†Œ๋“œ ์‹œ๊ทธ๋„ˆ์ฒ˜์— ๋ถ™์—ฌ๋„ ๋œ๋‹ค.
์ค‘๊ด„ํ˜ธ ์—ด๊ธฐ ์ „์— throws A, B, C...๋กœ ํ‘œ์‹œํ•œ๋‹ค.
์˜ˆ์™ธ๋ฐœ์ƒ์ด ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋Š” ๋˜ try๋ฌธ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. image

image ์ด ๊ฒฝ์šฐ์—๋Š” ๋ถ™์€๊ฒŒ main์ด๋ผ ๊ทธ๋ƒฅ ํ”„๋กœ๊ทธ๋žจ์ด ํ„ฐ์ง€๋Š” ๊ฑฐ๊ณ .


finally๋ฌธ
์ด๊ฑด ๋ฌด์กฐ๊ฑด ์ˆ˜ํ–‰๋˜์–ด์•ผํ•  ๋‚ด์šฉ์„ ์ง‘์–ด๋„ฃ๋Š” ๊ณต๊ฐ„์ด๋‹ค.
์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋“  ๋ง๋“ , break๋‚˜ return์œผ๋กœ ํƒˆ์ถœํ•˜๋“ , ๋ญ˜ํ•˜๋“  finally๋Š” ๊ทธ ์ง์ „์— ์ˆ˜ํ–‰๋œ๋‹ค.
๋ณดํ†ต ์ž์› ์ •๋ฆฌ๊ฐ™์€๊ฑธ ํ•˜๊ฑฐ๋‚˜ ์—ฐ๊ฒฐ์„ ๋Š๊ฑฐ๋‚˜ ํ• ๋•Œ ์ž์ฃผ ์“ด๋‹ค.

try { ... }
catch(...) { ... }
finally { ... }

์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ๋ก€๋‹ค. image