Próbowałem zrozumieć i przeczytać, co może to spowodować, ale po prostu nie mogę tego zrozumieć:
Mam to gdzieś w moim kodzie:
try{
..
m.invoke(testObject);
..
} catch(AssertionError e){
...
} catch(Exception e){
..
}
Chodzi o to, że gdy próbuje wywołać jakąś metodę, rzuca
InvocationTargetException
zamiast jakiegoś innego oczekiwanego wyjątku (konkretnie ArrayIndexOutOfBoundsException
). Ponieważ tak naprawdę wiem, która metoda jest wywoływana, przeszedłem prosto do tego kodu metody i dodałem blok try-catch dla linii, która ma się rzucać ArrayIndexOutOfBoundsException
i naprawdę rzuciła ArrayIndexOutOfBoundsException
zgodnie z oczekiwaniami. Jednak gdy idziemy w górę, jakoś zmienia się InvocationTargetException
w powyższym kodzie iw kodzie catch(Exception e)
e jest InvocationTargetException
i nie jest ArrayIndexOutOfBoundsException
zgodnie z oczekiwaniami.
Co może powodować takie zachowanie lub jak mogę sprawdzić takie rzeczy?