item 72 sijun - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
ํ์ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ
์๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๋ถ๋ถ API์์ ์ฐ๊ธฐ์ ์ถฉ๋ถํ ์์ ์์ธ๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ค์ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์ฐ์ ํ์ค ์์ธ๊ฐ ์๋ Custom Exception๋ฅผ ์ฌ์ฉํ๋ ์์์ด๋ค.
package test;
public class SampleException extends Exception {
int number;
public SampleException(int number) {
this.number = number;
}
@Override
public String toString() {
return "SampleException{number=" + number + '}';
}
}
package test;
public class Test {
public static void main(String[] args) throws SampleException {
throw new SampleException(13);
}
}
/**
---------------๊ฒฐ๊ณผ-----------------------------------
Exception in thread "main" SampleException{number=13}
at test.Test.main(Test.java:7)
Process finished with exit code 1
*/
์ ์ฝ๋์ฒ๋ผ ์ง์ ์ค๊ณ ์, ๋ค๋ฅธ ์ฌ๋์ด ์ตํ๊ธฐ ์ด๋ ค์ธ ์ ์๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋ ์ฆ๊ฐํ๋ ๋ฑ์ ๋ค์ํ ๋จ์ ์ด ์๋ค. ์ด์ ํ์ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ฉฐ ์๋๋ ํ์ค ์์ธ์ ๋ช๊ฐ์ง ์์์ด๋ค.
-
IllegalArgumentException: ๋ถ์ ์ ํ arguments ๊ฐ์ ๋๊ธธ ๋ ๋์ง๋ ์์ธ
ex) ๋ฐ๋ณต ํ์๋ฅผ ์ง์ ํ๋ ๋งค๊ฐ๋ณ์์ ์์๋ฅผ ๊ฑด๋ผ ๋
-
IllegalStateException: ๋์ ๊ฐ์ฒด์ ์ํ๊ฐ ํธ์ถ๋ ๋ฉ์๋๋ฅผ ์ํํ๊ธฐ์ ์ ํฉํ์ง ์์ ๋ ๋์ง๋ ์์ธ
ex) ์ ๋๋ก ์ด๊ธฐํ ํ์ง ์์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ค ํ ๋
๋ฉ์๋๊ฐ ๋์ง๋ ์์ธ ์ค ํน์ํ ์ผ์ด์ค๋ ๋ฐ๋ก ๊ตฌ๋ถํด ์ด๋ค.
-
NullPointerException > IllegalArgumentException
- null ๊ฐ์ ํ์ฉํ์ง ์๋ ๋ฉ์๋
-
IndexOutOfBoundsException > IllegalArgumentException
- sequence์ ํ์ฉ ๋ฒ์๋ฅผ ๋๊ธธ ๋
-
ConcurrentModificationExcpetion: ๋จ์ผ ์ค๋ ๋์์ ์ฌ์ฉํ๋ ค๊ณ ์ค๊ณํ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์์ ํ๋ ค ํ ๋ ๋์ง๋ ์์ธ
-
UnsupportedOperationException: ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋์์ ๋์ ๊ฐ์ฒด๊ฐ ์ง์ํ์ง ์์ ๋
ex) ์์๋ฅผ ๋ฃ์ ์๋ง ์๋ List๋ฅผ ๊ตฌํ์ฒด์ ๋๊ณ ๋๊ตฐ๊ฐ remove ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์ด ์์ธ๋ฅผ ๋์ง ๊ฒ์ด๋ค.
์์ ์๊ฐ๋ Exception๋ค์ ์ํธ ๋ฐฐํ์ ์ด์ง ์๊ธฐ์, ์ ํ์ ์ด๋ ค์์ด ์์ ์ ์๋ค.
์๋ฅผ๋ค์ด, ์นด๋ ๋ฑ์ ๋จ์ ์นด๋ ์ค ์ธ์๋ก ๋ฐ์ ๋งํผ ์นด๋๋ฅผ ๋ฝ๋๋ค๊ณ ํ์ ๋, IllegalArgumentException์ด๋ IllegalStateException์ด ๋๋ค ๊ฐ๋ฅํ๋ค.
์ด๋ด ๊ฒฝ์ฐ ์ธ์ ๊ฐ์ด ๋ฌด์์ด์๋ ์ด์ฐจํผ ์คํจํ์๊ฑฐ๋ผ๋ฉด IllegalStateException, ๊ทธ๋ ์ง ์์ผ๋ฉด IllegalArgumentExceptino์ ๋์ง์.
๊ทธ ์ธ Exception์ ์๋ API์์ ํ์ธ ๊ฐ๋ฅํ๋ค.
https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html