11 sierpnia
21:18 2009
Obecnie różne operacje na refleksji wyrzucają mnóstwo różnych wyjątków, które trzeba przechwycić, lub podać dalej. Wyłapywanie wszystkich IllegalAccessException, NoSuchMethodException, itp. nie jest zbyt wygodne i tylko zmniejsza czytelność kodu.
W rozwojowej wersji JDK 7, dodano ostatnio małe usprawnienie w postaci nowej klasy ReflectiveOperationException (diff oraz więcej info).
Teraz będzie można napisać:
try {
Method m = KlasaNasza.class.getMethod("foo");
m.invoke(null);
}
catch (ReflectiveOperationException e) {
e.printStackTrace();
}
(...)
Zamiast:
try {
Method m = KlasaNasza.class.getMethod("foo");
m.invoke(null);
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
catch (NoSuchMethodException e) {
e.printStackTrace();
}
(...)
Mała rzecz a cieszy ;)
Proszę o komentarz
try { Method m = KlasaNasza.class.getMethod("foo"); m.invoke(null);
}
catch (Exception e) { e.printStackTrace();
}
I działa identycznie ;)
Ale co prawda to prawda, przydatne rozróżnienie, choć nie praktyczne w tym przykładzie.