๐ฏ ์์ดํ 75. ์์ธ์ ์์ธ ๋ฉ์์ง์ ์คํจ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ด์ผ๋ผ.
@Override
public Object invoke(Object target, Object... parameters) {
try {
return ( (Method) getMember() ).invoke( target, parameters );
}
catch (NullPointerException e) {
throw new IllegalArgumentException( "Invoking " + getName() + " on a null object", e );
}
catch (IllegalArgumentException e) {
throw new IllegalArgumentException( "Invoking " + getName() + " with wrong parameters", e );
}
catch (Exception e) {
throw new IllegalStateException( "Unable to invoke " + getName(), e );
}
}
์ฌํ ๋ถ์์ ์ํด ์คํจ ์๊ฐ์ ์ํฉ์ ์ ํํ ํฌ์ฐฉํด ์์ธ์ ์์ธ ๋ฉ์์ง์ ๋ด์์ผ ํ๋ค. ์คํจ ์๊ฐ์ ํฌ์ฐฉํ๋ ค๋ฉด ๋ฐ์ํ ์์ธ์ ๊ด์ฌ๋ ๋ชจ๋ ๋งค๊ฐ๋ณ์์ ํ๋์ ๊ฐ์ ์คํจ ๋ฉ์์ง์ ๋ด์์ผ ํ๋ค.
์์ธ๋ ์คํจ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ๊ทผ์ ๋ฉ์๋๋ฅผ ์ ์ ํ ์ ๊ณตํ๋๊ฒ ์ข๋ค.
์์ธ์ ๋ชฉ์ ์ ๋ค์ ๋งํ์๋ฉด ๊ฐ๋ฐ์์๊ฒ ํฌ์ฐฉํ ์คํจ ์ ๋ณด๋ฅผ ์ ์ ๋ฌํด ์์ธ ์ํฉ์ ๋ณต๊ตฌํ๋๋ฐ ์๋ค. ๊ทธ๋ ๊ธฐ์ ์ ์ ํ ์ ๊ทผ์ ๋ฉ์๋๋ฅผ ์ด์ฉํด ์์ธ ๋ด์ฉ์ ์ ๋ฌํ ์ ์๋ค๋ฉด ๋์ฑ ์ข๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ์คํจ ์ ๋ณด๋ ๋น๊ฒ์ฌ ์์ธ(Unchecked Exception)๋ณด๋ค๋ ๊ฒ์ฌ ์์ธ(Checked Exception)์์ ๋์ฑ์ด ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ๊ฒ์ด๋ค.
์ฐธ๊ณ ์๋ฃ
Joshua Bloch, ใEffective Java 3/Eใ, ๊ฐ์๋งต์ ์ฎ๊น, ํ๋ก๊ทธ๋๋ฐ์ธ์ฌ์ดํธ(2018)
http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788966262281&orderClick=LEa&Kc=