wrapping_checked_exception_into_unchecked_exception
Checked Exception์ Unchecked Exception์ผ๋ก throwํ์
Checked Exception์ ์์ธ ๋ฐ์ ์, try/catch๋ฌธ์ผ๋ก ๋ณต๊ตฌ ์ ๋ต์ ์ธ์ด๋ค.
ํ์ง๋ง ๋ช ํํ ๋ณต๊ตฌ ์ ๋ต์ด ์์ ์๋ ์๊ณ , ๊ฐ๋ฐ์์๊ฒ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ๊ธฐ ์ํด์
Checked Exception์ Unchecked Exception์ผ๋ก throwํ๋ ๊ฒ ์ข๋ค๊ณ ํ๋คโ ์ด์ ๋ฅผ ์์ธํ ์์๋ณด์
Checked Exception
๋ try/catch๋ฌธ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ๋ณต๊ตฌ ์ ๋ต์ ๋ง๋ จํด๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๊ฒ ๋ณต๊ตฌ ์ ๋ต์ ๋ง๋ จํด๋์ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง ์๋ค. Checked Exception
์ด์ง๋ง ๋ณต๊ตฌํ ์ ์๋ ๊ฒฝ์ฐ(unrecoverable conditions) try/catch๋ฌธ์์ catch๋ฌธ์ ๋น์๋๊ธฐ๋ ํ๋ค. ํน์ ๊ตณ์ด ๋น์๋ catch๋ฌธ์ด ์๋๋๋ผ๋, ์์ธ๊ฐ ์กํ๋ ๊ฐ๋ฐ์์๊ฒ ๋ณด๊ณ ๋์ง ์๊ณ ๊ณ์ ํ๋ก๊ทธ๋จ์ด ์ ์ ์คํ๋๋ค๋ ๋ฌธ์ ๊ฐ ์๋ค(Execution of the program continues after the catch block, as if nothing had happened). ์ฐธ๊ณ ๋งํฌ
์ด๋ ๊ฒ try/catch๋ฌธ์ ๊ฐ๋ฐ์์๊ฒ ๋ณด๊ณ ๋์ง ์์ผ๋ฏ๋ก ๋ฌธ์ ํด๊ฒฐ์ด ์ด๋ ต๋ค. (๋ง์ฝ ํด๋ผ์ด์ธํธ ์ฝ๋์์ ํด๊ฒฐ ๊ฐ๋ฅํ๊ณ , ๋ณด๊ณ ๋ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ฒดํฌ์์ธ๋ฅผ ์ฌ์ฉํด๋ ๋๊ฒ ์ง๋ง..) ์ด๋ Checked Exception
๋ฅผ Unchecked Exception
๋ก throwํ๋ฉด ๊ฐ๋ฐ์์๊ฒ ๋ณด๊ณ ๋์ด ๋ฌธ์ ๋ฅผ ํ์
ํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ช
ํํ ๋ณต๊ตฌ ์ ๋ต์ ์ธ์ธ ์ ์๋ ๊ฒฝ์ฐ, Unchecked Exception
์ผ๋ก throwํด์ ๊ฐ๋ฐ์์๊ฒ ๋ช
ํํ ์์ธ ์ ๋ณด๋ฅผ ์ฃผ์ด ํด๊ฒฐํ์.
๋ค์์ ์๋ Checked Exception
์ธ SQLException
์ด ๋ฐ์ํ ์ํฉ์ด๋ค. SQLException
์ด ๋ฐ์ํ๋ฉด, ํด๋ผ์ด์ธํธ ์ฝ๋๋ก ํด๊ฒฐํ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ๋ฌ๋ฉด ์๋์ฒ๋ผ catch๋ฌธ์ ๋น์๋๊ธฐ๋ ํ๋ค. ์ด๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ค ๋ฌธ์ ์ธ์ง ์์ง ๋ชปํ๊ณ ํ๋ก๊ทธ๋จ์ด ๊ณ์ ์ ์ ์งํ๋๋ฏ๋ก ์ํํ๋ค.
// ๋ณต๊ตฌ ์ ๋ต์ด ์์ด catch๋ฌธ์ ๋น์๋ ์ํฉ
public void dataAccessCode(){
try{
..some code that throws SQLException
}catch(SQLException ex){
ex.printStacktrace();
}
}
๋ฐ๋ผ์ ์๋์ฒ๋ผ Unchecked Exception์ผ๋ก throw ํด์ฃผ์. ์๋ ์ฝ๋๋ SQLException
์ด ๋ฐ์์ RuntimeException
์ผ๋ก throwํด์ค๋ค. ์คํ ์ค์ธ ์ค๋ ๋๋ ๋ฉ์ถ๊ณ , ๊ฐ๋ฐ์์๊ฒ ์ด๋ค ์์ธ์ธ์ง ๋ณด๊ณ ๋๋ค. ์ฆ, Unchecked Exception์ผ๋ก ๋ฐ๊พธ์ด ๊ฐ๋ฐ์์๊ฒ ์์ธ๋ฅผ ๋ณด๊ณ ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ฒ ํ๋ค.
// Unchecked Exception์ผ๋ก throw ํด์ค ์ํฉ
public void dataAccessCode(){
try{
..some code that throws SQLException
}catch(SQLException ex){
throw new RuntimeException(ex);
}
}
โ ์์ ์ฐธ๊ณ ์ฌ๊ธฐ์๋ ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ, ํด๋น ๊ณ์ธต์ผ๋ก ๋๋ค๋ฅธ Checked Exception์ผ๋ก ๋๊ฒจ์ฃผ๋ ๋ฐฉ์๋ ์๊ฐํ๊ณ ์๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ฝ๋๊ฐ ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ฐ๋ฏ๋ก Unchecked Exception์ผ๋ก throw ํด์ฃผ์. ๋ฐ๋ผ์ ์ ๋ฐฉ์์ฒ๋ผ RuntimeException
ํน์ ์ด๋ฅผ ์์๋ฐ์ Unchecked Exception์ผ๋ก throw ํด์ฃผ์.
์ ๋ฆฌํ๋ฉด
๋ช ํํ ๋ณต๊ตฌ ์ ๋ต์ ์ธ์ธ์ ์๋ค๋ฉด Checked Exception์ ์ฌ์ฉํด๋ ์ข๋ค. ํ์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์์๊ฒ ์์ธ ์ํฉ์ ๋ณด๊ณ ํ๋ ๊ฒ ์์ ํ๋ค. Unchecked Exception์ผ๋ก throwํ์ฌ ๊ฐ๋ฐ์์๊ฒ ์์ธ ์ํฉ์ ๋ณด๊ณ ํ๊ณ ์์ ํ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ ์ข๋ค.
Reference
Last updated