[Java] ์์ธ์ฒ๋ฆฌ
์๋ฐ๋ ์ฌ๋ฌ๊ฐ์ง ๋
ผ๋ฆฌ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ๊ธฐ ์ํด, ์์ธ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์๋ฐ๋ ์์ธ์ ๋๊ฒ ์ข ์ง์ฐฉ์ ๋ง์ด ํ๋ ํธ์ด๋ค.
์์ธ๋ฅผ ๋์ง๋๊ฑด ๊ฐ๋จํ๋ค.
throw ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์์ธ๊ฐ ๋ ๋ผ๊ฐ๋ค.
throw์ ๋์์ด ๋ ์ ์๋๊ฑด Throwable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ Exception ํด๋์ค๋ ๊ทธ ์๋ธํด๋์ค๋ค ์ ๋๋ค.

๊ทผ๋ฐ ์๋ฐ์์ ๋๋ถ๋ถ์ ์์ธ๋ฅผ ๋์ง๊ธฐ๋ง ํ๋ฉด ์ปดํ์ผ ์๋ฌ๋ฅผ ๋ธ๋ค.
์๋ฐ์ ์์ธ๋ uncheck ์์ธ์ check ์์ธ๊ฐ ์๋๋ฐ, ๋ณดํต ๋๋ถ๋ถ์ ์์ธ๋ check ์์ธ๋ผ์. ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ๊ตฌ๋ฌธ์ ๋ฌด์กฐ๊ฑด try-catch๋ก ๊ฐ์ธ์ผ ํ๋ค.
uncheck ์์ธ๋ก๋ ๋ํฌ์ธํฐ์์ธ, ๋ฐฐ์ด๋ฒ์์ดํ ๋ฑ์ด ์๋ค.
์ฌํผ try-catch๋ฌธ์ ์ด๋ ๋ค.
try
{
**ย ย ย ...**
}
catch(์์ธํ์
1 ์ธ์๋ช
)
{
**ย ย ย ...**
}
catch(์์ธํ์
2 ์ธ์๋ช
)
{
**ย ย ย ...**
}
...
try๋ฌธ์ ๋ค๋ฐ๋ผ์ค๋ catch๋ฌธ์ด ๋ฌด์กฐ๊ฑด ํ๋ ์ด์์ ์์ด์ผ ํ๋ค.
๊ทผ๋ฐ ๋ญ. ๋ชจ๋ ์์ธ๋ Exception์ด๋ ๊ทธ ์๋ธํด๋์ค๋, Exception์ผ๋ก ๋ฐ์ผ๋ฉด ์ ๋ถ ๋ฐ์ ์ ์๋ค.
์๋๋ ์์ธ๋ฅผ ํ๋ ๋์ง๊ณ ๋ฐ๋ ๊ฐ๋จํ ์ฝ๋๋ค.


์ด๋ฒ์ ์์ธ๋ฅผ ํ๋ ์ ์ํด์ ์จ๋ณด๊ฒ ๋ค.
๋์ถฉ ์์ ์์ฑ์ ์ด๊ธฐํ๋ง ํด์ฃผ๋ฉด ๋๋ค.

๊ตฌํ์ ๋ญ ํญ์ ์ด๋ ๊ฒ ๊ฐ๋จํ๋ค.
๊ทธ๋์ ์ด๋ฆ์ ์ ์ง๋๊ฒ ์ค์ํ๋ค.
2๊ฐ์ง ์ด์์ ์์ธ์ฒ๋ฆฌ๋ ์ด๋ฐ ์์ผ๋ก ์ด๋ค.

catch๋ฌธ์ ์์์ ์๋๋ก ์์๋๋ก ๋์กฐํ๊ธฐ ๋๋ฌธ์, ์ํผํด๋์ค๋ฅผ ์๋์ ๋ฌ์ผํ๋ค.
throws ํค์๋
ํน์, ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ค๋๊ฑธ ๋ฉ์๋ ์๊ทธ๋์ฒ์ ๋ถ์ฌ๋ ๋๋ค.
์ค๊ดํธ ์ด๊ธฐ ์ ์ throws A, B, C...๋ก ํ์ํ๋ค.
์์ธ๋ฐ์์ด ๋ถ์ ๋ฉ์๋๋ ๋ try๋ฌธ ๋ด์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋ค.

์ด ๊ฒฝ์ฐ์๋ ๋ถ์๊ฒ main์ด๋ผ ๊ทธ๋ฅ ํ๋ก๊ทธ๋จ์ด ํฐ์ง๋ ๊ฑฐ๊ณ .
finally๋ฌธ
์ด๊ฑด ๋ฌด์กฐ๊ฑด ์ํ๋์ด์ผํ ๋ด์ฉ์ ์ง์ด๋ฃ๋ ๊ณต๊ฐ์ด๋ค.
์์ธ๊ฐ ๋ฐ์ํ๋ ๋ง๋ , break๋ return์ผ๋ก ํ์ถํ๋ , ๋ญํ๋ finally๋ ๊ทธ ์ง์ ์ ์ํ๋๋ค.
๋ณดํต ์์ ์ ๋ฆฌ๊ฐ์๊ฑธ ํ๊ฑฐ๋ ์ฐ๊ฒฐ์ ๋๊ฑฐ๋ ํ ๋ ์์ฃผ ์ด๋ค.
try { ... }
catch(...) { ... }
finally { ... }
์๋๋ ๊ฐ๋จํ ์ฌ์ฉ๋ก๋ค.
