2023. 1. 9. 10:15ใJAVA/Effective JAVA
item02. ์์ฑ์์ ๋งค๊ฐ๋ณ์๊ฐ ๋ง๋ค๋ฉด ๋น๋๋ฅผ ๊ณ ๋ คํ๋ผ.
" p19. IllegalArgumentException"
IllegalArgumentException ๋?
: ์ ํฉํ์ง ์๊ฑฐ๋, ์ ์ ํ์ง ๋ชปํ ์ธ์๋ฅผ ๋ฉ์๋์ ๋๊ฒจ์ฃผ์์ ๋ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค.
์ฆ, ํ๋ผ๋ฏธํฐ์ ๋ญ๊ฐ ์๋ชป๋ ๊ฐ์ด ๋์ด์์ ๋ ๋ฐ์ํ๋ ์ค๋ฅ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฉ์๋์ ์ ๋ฌ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์ ์ ๋ฌ๋๊ฑด์ง ํ์ธ์ด ํ์ํ๋ค.
๋ณดํต์ ๊ฑฐ์ ์๋ฌ ๋ก๊ทธ๋ง ์ ํ์ธํด๋ ํด๊ฒฐ ํ ์ ์๋ค.
์ด๋ ๊ฒ ๋ฐฐ์ก์ผ์ ๋ณ๊ฒฝํ๋ ๋ฉ์๋๊ฐ ์๋ค๊ณ ํ์.
์ด๋, deliveryDate๊ฐ ํ์ฌ๋ณด๋ค ์ ์ด๋ผ๋ฉด ๋ฐฐ์ก์ ๊ณผ๊ฑฐ๋ก ํ ์ ์๊ธฐ ๋๋ฌธ์ IllegalArgumnetException์ ํตํด ํ๋ผ๋ฏธํฐ๊ฐ ์๋ชป๋๋ค๊ณ ์๋ ค์ฃผ๊ธฐ ์ํด์ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
์๋ฌ๋ฅผ ๋์ง ๋๋ ๊ทธ๋ฅ ๋จ์ํ ์๋ฌ๋ง ๋์ง๋ ๊ฒ์ด ์๋๋ผ ์๋ฌ ๋ฉ์์ง๋ ํจ๊ป ๋จ๊ฒจ์ ์ด๋์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์ง ๋ฐ๋ก ํ์ธํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค.
Checked Exception๊ณผ unChecked Exception์ ์ฐจ์ด์ ์?
: checked Exception์ ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๋๋ฐ ์์ธ๋ฅผ ๋ค์ throw ํ๊ฑฐ๋ try-catch๋ฅผ ํตํด์ ์ก์์ผ ํ๋ค.
๋ํ checked Exception๋ ๋ณต๊ตฌ๊ฐ ๊ฐ๋ฅํ ์ํฉ์์ ๋์ง๋ ์์ธ์ด๋ค.
๋ฐ๋ฉด unchecked Exeption์ ๊ฒฝ์ฐ์๋ ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ญ๊ฐ๋ฅผ ํ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ์ด ์์ธ๋ฅผ ๋์ง๋ค. ์ฆ, ์์ธ ์ฒ๋ฆฌ๋ฅผ ํ์๋ก ํ์ง ์์๋ ๋๋ค.
๊ฐํน ๋ฉ์๋ ์ ์ธ๋ถ์ unchecked Exception์ ์ ์ธํ๋ ์ด์ ๋?
: ํด๋ผ์ด์ธํธ์๊ฒ ๋ช ์์ ์ผ๋ก ์๋ ค์ฃผ๊ณ ์ถ์ ๋ ์ฃผ๋ก ์ ์ธํด์ ์ฌ์ฉํ๋ค.
(์ด ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ์ ์๋ชป๋ ๊ฐ์ด ๋์ด์ค๋ฉด ์ด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค~ ์ด๋ฐ์์ผ๋ก ์๋ ค์ฃผ๊ธฐ ์ํด์)
๊ทผ๋ฐ unchecked Exception์ด ๋ฐ์ํ ์ ์๋ ์ํฉ์ด ๋ง์ ์๋ ์๊ณ , ,,, ๊ทธ๋ฌ๋ฉด ๊ฐ๋ ์์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ณดํต ๋ฉ์๋ ์ ์ธ๋ถ์๋ checked Exception ์ ์ ์ธํ๋ค.
checked Exception์ ์ ์ฌ์ฉํ ๊น?
: ์ด ์๋ฌ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ํด๋น ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ด์ ๋ํ ํ์ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
Runtime Exception ํด๋์ค
RuntimeException (Java SE 11 & JDK 11 ) (oracle.com)
If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.