IllegalArgumentException: объект не является экземпляром объявления класса - PullRequest
7 голосов
/ 19 апреля 2009

Как возможно, что исключение "foo" не выброшено, но последующий вызов invoke () вызывает исключение ниже?

if (method.getDeclaringClass() != object.getClass())
    throw new RuntimeException("foo");

method.invoke(object);

Исключение:

java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

1 Ответ

13 голосов
/ 19 апреля 2009

Бех ... Звонок method.invoke() не был прямым броском. Целевой метод тоже использовал invoke, и он бросил, поэтому он всплыл.

Извлеченный урок: обрабатывать InvocationTargetException отдельно от других исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...