Bueno, he tratado de entender y leer lo que podría causar, pero yo simplemente no puede conseguirlo:¿Qué podría causar java.lang.reflect.InvocationTargetException?
tengo en alguna parte de mi código siguiente:
try{
..
m.invoke(testObject);
..
} catch(AssertionError e){
...
} catch(Exception e){
..
}
cosa es que, cuando se intenta invocar algún método que arroja InvocationTargetException
en lugar de alguna otra excepción esperada (específicamente ArrayIndexOutOfBoundsException
). Como sé realmente qué método se invoca, fui directamente a este código de método y agregué un bloque try-catch para la línea que suponía arrojar ArrayIndexOutOfBoundsException
y arrojó realmente ArrayIndexOutOfBoundsException
como se esperaba. Sin embargo, al subirlo de alguna manera cambia a InvocationTargetException
y en el código anterior catch(Exception e)
e es InvocationTargetException
y no como se esperaba.
¿Qué podría causar tal comportamiento o cómo puedo verificar tal cosa?
Gracias, pero ¿cómo difiero entre (AssertionError e) y (Exception e), por ejemplo? Si siempre obtengo InvocationTargetException primero antes de desenvolver la causa, ¿dónde diferiré entre cada excepción? – user550413
@ user550413: Al desenvolver la excepción y examinar eso, por supuesto. Siempre puedes tirarlo tú mismo, y atraparlo de esa manera si es necesario. –
Para cualquiera que se pregunte qué significa "desenvolver la causa dentro de' InvocationTargetException' ", descubrí que si lo imprimía usando' exception.printStackTrace() ', simplemente mira el" Caused By: " sección en lugar de la mitad superior/sección normal. – Jan