2009-04-19 6 views
7

Come è possibile che l'eccezione "pippo" sia non generata, ma una successiva chiamata di invoke() genera l'eccezione seguente?IllegalArgumentException: object non è un'istanza di dichiarare la classe

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

method.invoke(object); 

eccezione generata:

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

+1

Puoi fornire i dettagli dello spostamento, ad esempio la definizione della classe? – iny

+0

più invece di spostare naturalmente – iny

risposta

13

Beh ... La chiamata method.invoke() non era quello gettando direttamente. Il metodo di destinazione stava usando anche invoke e lo ha gettato, quindi è esploso.

Lezione appresa: gestire InvocationTargetException separatamente dalle altre eccezioni.

+0

hhaaa. Ci avevo già pensato :) –

+0

Ouch ... quella è cattiva! –

+8

Quindi: guarda sempre la traccia dello stack completo. –

Problemi correlati