2009-04-19 18 views
7

¿Cómo es posible que la excepción "foo" sea no lanzada, pero una llamada posterior de invoke() arroja la siguiente excepción?IllegalArgumentException: objeto no es una instancia de declarar clase

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

method.invoke(object); 

excepción lanzada:

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

+1

¿Puede dar detalles de movimiento, por ejemplo, la definición de clase? – iny

+0

más en lugar del movimiento del curso – iny

Respuesta

13

Beh ... La llamada method.invoke() no era la que tirar directamente. El método de destino también estaba usando invoke y lo arrojó, por lo que burbujeó.

Lección aprendida: Maneje InvocationTargetException por separado de otras excepciones.

+0

hhaaa. Ya he pensado en eso :) –

+0

Ouch ... ¡eso es desagradable! –

+8

Entonces: siempre mire la traza completa de la pila. –

Cuestiones relacionadas