item 70 hyowon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
๋ณต๊ตฌํ ์ ์๋ ์ํฉ์๋ ๊ฒ์ฌ ์์ธ, ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ์๋ ๋ฐํ์ ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ
throwable - ์ ๋ ์ฌ์ฉํ์ง ๋ง์
์๋ฌต์ ์ผ๋ก ์ผ๋ฐ์ ์ธ ๊ฒ์ฌ ์์ธ์ฒ๋ผ ๋ค๋ฃฌ๋ค.
๊ฐ๋ฐ์๋ค์ด ๊ฐ๋ ์๊ณค ํ๋ ์ ์, ์์ธ ์ญ์ ์ด๋ค ๋ฉ์๋๋ผ๋ ์ ์ํ ์ ์๋ ์๋ฒฝํ ๊ฐ์ฒด๋ผ๋ ์ ์ด๋ค. ์์ธ์ ๋ฉ์๋(printStackTrace ๋ฑ)๋ ์์ธ๋ฅผ ์ผ์ผํจ ์ํฉ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๋ฌํด์ค๋ค. ์์ธ์ ๋ฉ์๋๋ฅผ ํตํด ์คํจ ๊ด๋ จ ์ ๋ณด๋ฅผ ์์ธํ๊ฒ ๋ด์์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ, throwable ํด๋์ค๋ค์ ๋๋ถ๋ถ ์ค๋ฅ ๋ฉ์์ง ํฌ๋งท์ด ์์ธํ์ง ์์ผ๋ฏ๋ก JVM์ด๋ ๋ฆด๋ฆฌ์ค์ ๋ฐ๋ผ ํฌ๋งท์ด ๋ฌ๋ผ์ง ์ ์๋ค.
๋ํ throwable์ ์ ์์ ์ธ ๊ฒ์ฌ ์์ธ๋ณด๋ค ๋์๊ฒ ํ๋๋ ์์ผ๋ฉด์ API ์ฌ์ฉ์๋ฅผ ํท๊ฐ๋ฆฌ๊ฒ ํ ๋ฟ์ด๋ ์ฑ ์์๋ ์ ๋ ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ๋งํ๊ณ ์๋ค.
๊ฒ์ฌ ์์ธ(checked Exception) - ํธ์ถํ๋ ์ชฝ์์ ๋ณต๊ตฌ
Exception ํด๋์ค์์ RuntimeException์ ์ ์ธํ ๋ค๋ฅธ ํด๋์ค๋ค์ด ๊ฒ์ฌ ์์ธ์ด๋ค.
๊ฐ๋ฐ์๊ฐ ์ถฉ๋ถํ ๋ณต๊ตฌํ ์ ์๋ ์ํฉ์ด๋ผ ์ฌ๊ฒจ์ง๋ฉด ๋์ง๊ฒ ๋๋ค.
๋ฉ์๋ ์ ์ธ์ ํฌํจ๋ ๊ฒ์ฌ ์์ธ ๊ฐ๊ฐ์ ๊ทธ ๋ฉ์๋๋ฅผ ํธ์ถํ์ ๋ ๋ฐ์ํ ์ ์๋ ์ ๋ ฅํ ๊ฒฐ๊ณผ์์ API ์ฌ์ฉ์์๊ฒ ์๋ ค์ค๋ค.
throwable์์ ๋งํ ๊ฒ ์ฒ๋ผ, ์์ธ์ ๋ฉ์๋๋ฅผ ํตํด ์คํจ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ด์์ผ ํ๋ค.(item 75์ ๊ณ์)
์๋ฅผ ๋ค์ด, ์ผํ๋ชฐ์์ ๋ฌผ๊ฑด์ ๊ตฌ์ ํ๋ ค๋๋ฐ ์นด๋ ์๊ณ ๊ฐ ๋ถ์กฑํด ๊ฒ์ฌ ์์ธ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ์์ธ๋ ์๊ณ ๊ฐ ์ผ๋ง๋ ๋ถ์กฑํ์ง๋ฅผ ์๋ ค์ฃผ๋ ์ ๊ทผ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
์๋ฌ - ๋์ง๊ฑฐ๋, ์์๋ฐ์ง ๋ง์
๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋, ๋ ์คํํด๋ด์ผ ๋๋ณด๋ค๋ ์ค์ด ๋ง๋ค๋ ๋ป์ผ๋ก, ํ๋ก๊ทธ๋จ์ด ์ ์ ํ ์ค๋ฅ๋ฉ์์ง๋ฅผ ๋ด๋ฑ์ผ๋ฉฐ ์ค๋จ๋๋ค.
JVM ์์ ๋ถ์กฑ, ๋ถ๋ณ์ ๊นจ์ง ๋ฑ ๋ ์ด์ ์ํ์ ๊ณ์ํ ์ ์๋ ์ํฉ์ ์ฌ์ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฐ ์ธ์ด ๋ช ์ธ๊ฐ ์๊ตฌํ๋ ๊ฒ์ ์๋์ง๋ง ์ ๊ณ์ ํผ์ง ์ฝ์์ผ๋ก Error ํด๋์ค๋ฅผ ์์ํ ํ์ ํด๋์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ throw๋ก ๋์ง์ง๋ ๋ง์.
์ฆ, ๋น๊ฒ์ฌ ์์ธ๋ฅผ ๋ง๋ค ๋๋ RuntimeException์ ์์๋ฐ์์ผ ํ๋ค.
RuntimeException - ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ
๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ๊ฑฐ๋, ๋ ์คํํด๋ด์ผ ๋๋ณด๋ค๋ ์ค์ด ๋ง๋ค๋ ๋ป์ผ๋ก, ํ๋ก๊ทธ๋จ์ด ์ ์ ํ ์ค๋ฅ๋ฉ์์ง๋ฅผ ๋ด๋ฑ์ผ๋ฉฐ ์ค๋จ๋๋ค.
๋๋ถ๋ถ์ ๋ฐํ์์์ธ๋ ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ์ ๋ ๋ฐ์ํ๋ค.
๋ค๋ง ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๋ณต๊ตฌํ ์ ์๋ ์ํฉ์ธ์ง, ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ์ธ์ง๊ฐ ํญ์ ๋ช ํํ ๊ตฌ๋ถ๋์ง๋ ์๋๋ค๋ ์ ์ด๋ค.
์๋ฅผ ๋ค์ด, ์์ ๊ณ ๊ฐ์ ๋ง๋ ์ ๋๋ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ํ ๋นํด ์๊ธด ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ์ผ ์๋ ์๊ณ , ์ง์ง๋ก ์์์ด ๋ถ์กฑํด์ ๋ฐ์ํ ๋ฌธ์ ์ผ ์๋ ์๋ค.
๋ง์ฝ ์์์ด ์ผ์์ ์ผ๋ก ๋ถ์กฑํ ์ํฉ์ด๋ผ๋ฉด ์ถฉ๋ถํ ๋ณต๊ตฌ๋ ์ ์์ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ณต๊ตฌ ๊ฐ๋ฅํ๋ค๊ณ ๋ฏฟ๋๋ค๋ฉด ๊ฒ์ฌ ์์ธ๋ฅผ, ๊ทธ๋ ์ง ์๋ค๋ฉด RuntimeException์ ์ฌ์ฉํ์.
์ ๋ฆฌ
๊ฐ๋ฐ์๊ฐ ๋ณต๊ตฌํ ์ ์๋ ๋ฌธ์ ๋ ๊ฒ์ฌ ์์ธ๋ก,
ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ๋ ๋ฐํ์ ์์ธ๋ก ๋์ง๋ค.
throwable๊ณผ Error๋ ์์๋ฐ๊ฑฐ๋, ๋์ง์ง ๋ง์.