item 73 doyoung - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
์ํํ๋ ค๋ ์ผ๊ณผ ๊ด๋ จ ์์ด ๋ณด์ด๋ ์์ธ๊ฐ ํ์ด๋์ค๋ฉด ๋นํฉ์ค๋ฌ์ธ ๊ฒ์ด๋ค.
๋ฉ์๋๊ฐ ์ ์์ค ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ์๊ณ ๋ฐ๊นฅ์ผ๋ก ์ ํํด๋ฒ๋ฆด ๋ ์ข
์ข
์ผ์ด๋๋ ์ผ์ด๋ค.
์ฌ์ค ์ด๋ ๋จ์ํ ํ๋ก๊ทธ๋๋จธ๋ฅผ ๋นํฉ์ํค๋ ๋ฐ ๊ทธ์น์ง ์๊ณ , ๋ด๋ถ ๊ตฌํ ๋ฐฉ์์ ๋๋ฌ๋ด์ด ์ ๋ ๋ฒจ API๋ฅผ ์ค์ผ์ํจ๋ค.
๋ค์ ๋ฆด๋ฆฌ์ค์์ ๊ตฌํ ๋ฐฉ์์ ๋ฐ๊พธ๋ฉด ๋ค๋ฅธ ์์ธ๊ฐ ํ์ด๋์ ๊ธฐ์กด ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ๊นจ์ง๊ฒ ํ ์๋ ์๋ ๊ฒ์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํผํ๋ ค๋ฉด ์์ ๊ณ์ธต์์๋ ์ ์์ค ์์ธ๋ฅผ ์ก์ ์์ ์ ์ถ์ํ ์์ค์ ๋ง๋ ์์ธ๋ก ๋ฐ๊ฟ ๋์ ธ์ผ ํ๋ค. ์ด๋ฅผ ์์ธ ๋ฒ์ญ(exception translation)์ด๋ผ ํ๋ค.
try {
... // ์ ์์ค ์ถ์ํ๋ฅผ ์ด์ฉํ๋ค.
} catch (LowerLevelException e) {
// ์ถ์ํ ์์ค์ ๋ง๊ฒ ๋ฒ์ญํ๋ค.
throw new HigherLevelException(...);
}
/**
* ์ด ๋ฆฌ์คํธ ์์ ์ง์ ํ ์์น์ ์์๋ฅผ ๋ฐํํ๋ค.
* @throws IndexOutOfBoundsException index๊ฐ ๋ฒ์ ๋ฐ์ด๋ผ๋ฉด,
* ์ฆ ({@code index < 0 || index >= size()})์ด๋ฉด ๋ฐ์ํ๋ค.
*/
public E get(int index) {
ListIterator<E> i = listIterator(index);
try {
return i.next();
} catch (NoSuchElementException e) {
throw new IndexOutOfBoundsException("์ธ๋ฑ์ค: " + index);
}
}
์์์ ์ํํ ์์ธ ๋ฒ์ญ์ List ์ธํฐํ์ด์ค์ get ๋ฉ์๋ ๋ช ์ธ์ ๋ช ์๋ ํ์์ฌํญ์์ ๊ธฐ์ตํด๋์.
์์ธ๋ฅผ ๋ฒ์ญํ ๋, ์ ์์ค ์์ธ๊ฐ ๋๋ฒ๊น ์ ๋์์ด ๋๋ค๋ฉด ์์ธ ์ฐ์(exception chaining)๋ฅผ ์ฌ์ฉํ์
์์ธ ์ฐ์๋ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ(cause)์ธ ์ ์์ค ์์ธ๋ฅผ ๊ณ ์์ค ์์ธ์ ์ค์ด ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค. ๊ทธ๋ฌ๋ฉด ๋ณ๋์ ์ ๊ทผ์ ๋ฉ์๋(Throwable์ getCause ๋ฉ์๋)๋ฅผ ํตํด ํ์ํ๋ฉด ์ธ์ ๋ ์ ์์ค ์์ธ๋ฅผ ๊บผ๋ด๋ณผ ์ ์๋ค.
try {
... // ์ ์์ค ์ถ์ํ๋ฅผ ์ด์ฉํ๋ค.
} catch (LowerLevelException cause) {
// ์ ์์ค ์์ธ๋ฅผ ๊ณ ์์ค ์์ธ์ ์ค์ด ๋ณด๋ธ๋ค.
throw new HigherLevelException(cause);
}
- ๋ฌดํฑ๋๊ณ ์์ธ๋ฅผ ์ ํํ๋ ๊ฒ๋ณด๋ค์ผ ์์ธ ๋ฒ์ญ์ด ์ฐ์ํ ๋ฐฉ๋ฒ์ด์ง๋ง, ๊ทธ๋ ๋ค๊ณ ๋จ์ฉํด์๋ ๊ณค๋ํ๋ค. ๊ฐ๋ฅํ๋ค๋ฉด ์ ์์ค ๋ฉ์๋๊ฐ ๋ฐ๋์ ์ฑ๊ณตํ๋๋ก ํ์ฌ ์๋ ๊ณ์ธต์์๋ ์์ธ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ ๊ฒ์ด ์ต์ ์ด๋ค.
- ๋๋ก ์์ ๊ณ์ธต ๋ฉ์๋์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ์๋ ๊ณ์ธต ๋ฉ์๋๋ก ๊ฑด๋ค๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ๊ฒ์ฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด ๋ชฉ์ ์ ๋ฌ์ฑํ ์ ์๋ค.
- ์ฐจ์ ์ฑ ๋ ์์๋ณด์. ์๋ ๊ณ์ธต์์์ ์์ธ๋ฅผ ํผํ ์ ์๋ค๋ฉด, ์์ ๊ณ์ธต์์ ๊ทธ ์์ธ๋ฅผ ์กฐ์ฉํ ์ฒ๋ฆฌํ์ฌ ๋ฌธ์ ๋ฅผ API ํธ์ถ์์๊น์ง ์ ํํ์ง ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์๋ ๊ณ์ธต์ ์์ธ๋ฅผ ์๋ฐฉํ๊ฑฐ๋ ์ค์ค๋ก ์ฒ๋ฆฌํ ์ ์๊ณ , ๊ทธ ์์ธ๋ฅผ ์์ ๊ณ์ธต์ ๊ทธ๋๋ก ๋ ธ์ถํ๊ธฐ ๊ณค๋ํ๋ค๋ฉด ์์ธ ๋ฒ์ญ์ ์ฌ์ฉํ๋ผ.
์ด๋ ์์ธ ์ฐ์๋ฅผ ์ด์ฉํ๋ฉด ์์ ๊ณ์ธต์๋ ๋งฅ๋ฝ์ ์ด์ธ๋ฆฌ๋ ๊ณ ์์ค ์์ธ๋ฅผ ๋์ง๋ฉด์ ๊ทผ๋ณธ ์์ธ๋ ํจ๊ป ์๋ ค์ฃผ์ด ์ค๋ฅ๋ฅผ ๋ถ์ํ๊ธฐ์ ์ข๋ค(์์ดํ 75).