๋ชจ๋ ์์ธ๋ ์ ์ ํ๊ฒ ๋ณต๊ตฌ๋๋์ง ์์ ์ ์ค๋จ์ํค๊ณ ์ด์์/๊ฐ๋ฐ์์๊ฒ ํต๋ณด๋์ด์ผ ํ๋ค
์์ธ์ฒ๋ฆฌ์ ์์ข์ ์ 2๊ฐ์ง
- ์์ธ ๋ฌด์
- ์์ธ์ฒ๋ฆฌ ์ฝ๋์์ ์๋ฌด ๋์ X / ์์ธ ์ถ๋ ฅ๋ง ํจ
- ๋ฌด๋ถ๋ณํ
throws Exception
4.2.1 ์์ธ์ ์ข ๋ฅ์ ํน์ง
- Error
- java.lang.Error ์๋ธํด๋์ค
- ์์คํ ์ ๋น์ ์์ ์ธ ์ํฉ์ด ๋ฐ์ํ์ ๋ ์ฌ์ฉ
- ๋์๋ฐฉ๋ฒ ์์ผ๋ ์ ๊ฒฝ ใดใด
- Exception๊ณผ ์ฒดํฌ ์์ธ
- ๊ฐ๋ฐ์๋ค์ด ๋ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์์ ์ค ์์ธ์ํฉ์ด ๋ฐ์ํ์ ๊ฒฝ์ฐ
- catch๋ฌธ์ผ๋ก ์ก๋๋ค or throws๋ฅผ ์ ์ํด์ ๋์ง๋ค โ ์ํ๋ฉด ์ปดํ์ผ์๋ฌ
- RuntimeException๊ณผ ์ธ์ฒดํฌ/๋ฐํ์ ์์ธ
- ํ๋ก๊ทธ๋จ์ ์ค๋ฅ๊ฐ ์์ ๋ ๋ฐ์ํ๋๋ก ์๋๋ ๊ฒ๋ค
NullPointException
,IllegalArgumentException
, โฆ
์ฒดํฌ์์ธ / ์ธ์ฒดํฌ ์์ธ
์ฒดํฌ ์์ธ : Exception ํด๋์ค์ ์๋ธํด๋์ค + RuntimeException ํด๋์ค ์์ X
์ธ์ฒดํฌ ์์ธ : RuntimeExceptoin์ ์์ํ ํด๋์ค
4.1.3 ์์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
- ์์ธ ๋ณต๊ตฌ
- ์์ธ ์ํฉ์ ํ์ ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ ์ ์์ํ๋ก ๋๋ ค๋๋ ๊ฒ
- ์์ธ์ํฉ์ด ๋ฐ์ํ ์ ์์์ ์ธ์ํ๋๋ก ๋์์ฃผ๊ณ ์ด์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์๋ํ๋๋ก ์๊ตฌ
- ์์ธ์ฒ๋ฆฌ ํํผ
- ์์ธ์ฒ๋ฆฌ๋ฅผ ์์ ์ด ๋ด๋นํ์ง ์๊ณ ํธ์ถํ์ชฝ์ผ๋ก ๋์ง๋ ๊ฒ
- throws๋ฌธ or catch๋ฌธ์ผ๋ก ์์ธ ์ก๊ณ ๋ค์ rethrows
- ๊ทธ๋ฅ ๋์ง๋๊ฑด ๋ฌด์ฑ ์ํ ์ฑ ์ ํํผ, ํํผํ ๋ ์๋๊ฐ ๋ถ๋ช ํด์ผ ํจ
- ์์ธ ์ ํ
- ์์ธ๋ฅผ ๋ณต๊ตฌํด์ ์ ์์ ์ธ ์ํ๋ก ๋ง๋ค ์ ์์ผ๋ ๋ฉ์๋ ๋ฐ์ผ๋ก ๋์ง๋ ๊ฒ
- ๋ฐ์ํ ์์ธ๋ฅผ ๊ทธ๋๋ก ๋๊ธฐ๋๊ฒ ์๋๋ผ ์ ์ ํ ์์ธ๋ก ์ ํํด์ ๋์ง
- ์ค์ฒฉ์์ธ ์ด์ฉ
- ์๋ฏธ๋ฅผ ๋ถ๋ช ํ๊ฒ ํ๊ณ , ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ฝ๊ณ ๋จ์ํ๊ฒ ๋ง๋ค๊ธฐ ์ํด
- ์ฃผ๋ก ์ฒดํฌ์์ธ๋ฅผ ๋ฐํ์ ์์ธ๋ก ๋ฐ๊พธ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ
4.1.4 ์์ธ์ฒ๋ฆฌ ์ ๋ต
-
๋ฐํ์ ์์ธ์ ๋ณดํธํ
- ์๋ฐ ์ํฐํ๋ผ์ด์ฆ ํ๊ฒฝ์์๋ ์๋ง์ ์์ฒญ์ด ๋ค์ด์ด โ ์๋ฒ๋ฅผ ์ค๋จ์ํค๊ณ ์์ธ์ํฉ ๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅ
- ์ ํ๋ฆฌ์ผ์ด์ ์ฐจ์์์ ์์ธ์ํฉ์ ๋ฏธ๋ฆฌ ํ์ ํ ํต๋ณด
- ๋์์ด ๋ถ๊ฐ๋ฅํ ์ฒดํฌ์์ธ๋ผ๋ฉด ๋ฐํ์ ์์ธ๋ก ์ ํํด์ ๋์ง๋๊ฒ ๋ซ๋ค
-
์ ํ๋ฆฌ์ผ์ด์ ์์ธ
- ์์คํ ๋๋ ์ธ๋ถ์ ์์ธ์ํฉ์ด ์์ธ์ด ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด์ ๋ก์ง์ ์ํด ์๋์ ์ผ๋ก ๋ฐ์์ํค๊ณ , ๋ฐ๋์ catchํด์ ์กฐ์น๋ฅผ ์ทจํ๋๋ก ์๊ตฌํ๋ ์์ธ
- ex) ์ถ๊ธ ๋ฉ์๋์์ ์ ์์ฒ๋ฆฌ/์๊ณ ๋ถ์กฑ ๋ฆฌํด๊ฐ์ ๋ค๋ฅด๊ฒํจ or ์์ธ์ํฉ์์๋ ๋น์ฆ๋์ค์ ์ธ ์๋ฏธ๋ฅผ ๋ค ์์ธ๋ฅผ ๋์ง๋๋ก ๋ง๋๋ ๊ฒ
- ์ฒดํฌ์์ธ ์ฌ์ฉ
4.1.5 SQLException
- ์ฝ๋๋ ๋ฒจ์์๋ ๋ณต๊ตฌ ๋ถ๊ฐ๋ฅ
- ๊ด๋ฆฌ์๋ ๊ฐ๋ฐ์ํํ ๋นจ๋ฆฌ ํต๋ณด ใฑใฑ
- ๋ฐํ์ ์์ธ๋ก ์ ํํด์ค์ผ ํจ
4.2 ์์ธ ์ ํ
์์ธ ์ ํ์ ๋ชฉ์
- ๊ตณ์ด ํ์ํ์ง ์์ catch/throws๋ฅผ ์ค์
- ๋ก์ฐ๋ ๋ฒจ์ ์์ธ๋ฅผ ๋ ์๋ฏธ์๊ณ ์ถ์ํ๋ ์์ธ๋ก ๋ฐ๊ฟ์ ๋์ง
4.2.1 JDBC ํ๊ณ
- ๋นํ์ค SQL
- ํธํ์ฑ ์๋ SQLExcepton DB ์๋ฌ์ ๋ณด
4.2.2. DB ์๋ฌ์ฝ๋ ๋งคํ์ ํตํ ์ ํ
DB๋ณ ์๋ฌ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด ๋ฐ์ํ ์์ธ์ ์์ธ์ด ๋ฌด์์ธ์ง ํด์ํด์ฃผ๋ ๊ธฐ๋ฅ ์์ฑ
4.2.3 DAO ์ธํฐํ์ด์ค์ DataAccessExcepton ๊ณ์ธต ๊ตฌ์กฐ
DataAccessException : ์๋ฏธ๊ฐ ๊ฐ์ ์์ธ๋ผ๋ฉด ์ผ๊ด๋ ์์ธ๊ฐ ๋ฐ์ํ๋๋ก ๋ง๋ค์ด์ค
DAO ์ธํฐํ์ด์ค์ ๊ตฌํ์ ๋ถ๋ฆฌ
DAO๋ฅผ ๋ฐ๋ก ๋ง๋๋ ์ด์
- ๋ฐ์ดํฐ ์ก์ธ์ค ๋ก์ง์ ๋ด์ ์ฝ๋๋ฅผ ์ฑ๊ฒฉ์ด ๋ค๋ฅธ ์ฝ๋์์ ๋ถ๋ฆฌํด๋๊ธฐ ์ํด
- ์ ๋ต ํจํด์ ์ ์ฉํ๊ธฐ ์ํด
DAO์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ธฐ์ ์ API์์ ์์ธ ๋ฐ์ โ throws Exception; โ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ธฐ์ ์ด ๋ฌ๋ผ์ง๋ฉด ๋ค๋ฅธ ์ข ๋ฅ์ ์์ธ ๋ฐ์ โ ๊ฒฐ๊ตญ DAO ์ฌ์ฉ ๊ธฐ์ ์ ๋ฐ๋ผ ์์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ ธ์ผ ํจ
๋ฐ์ดํฐ ์ก์ธ์ค ์์ธ ์ถ์ํ์ DataAccessException ๊ณ์ธต๊ตฌ์กฐ
๊ทธ๋์ ์คํ๋ง์ ๋ฐ์ดํฐ ์ก์ธ์ค๋ง๋ค ๋ฐ์ํ๋ ์์ธ๋ค์ ์ถ์ํํด์ ๊ณ์ธต๊ตฌ์กฐ์ ์ ๋ฆฌํด๋์ ๋ฐ์ดํฐ ์ก์ธ์ค ์ง์ ๊ธฐ์ ์ ์ด์ฉํด DAO๋ฅผ ๋ง๋ค๋ฉด ๊ธฐ์ ์ ๋ ๋ฆฝ์ ์ธ ์์ธ๋ฅผ ๋์ง ์ ์์
DAO๋ฅผ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ธฐ์ ์์ ๋ ๋ฆฝ์ํค๋ ค๋ฉด ์ธํฐํ์ด์ค ๋์ ๊ณผ ๋ฐํ์ ์์ธ ์ ํ, ๊ธฐ์ ์ ๋ ๋ฆฝ์ ์ธ ์ถ์ํ๋ ์์ธ๋ก ์ ํ์ด ํ์ํจ
์ด์ผ๋ฏผ, [ํ ๋น์ ์คํ๋ง 3.1], ์์ด์ฝ ์ถํ์ฌ(2012)