Ну, я намагався зрозуміти і прочитати, що це може спричинити, але я просто не можу цього зрозуміти:
У мене це є десь у коді:
try{
..
m.invoke(testObject);
..
} catch(AssertionError e){
...
} catch(Exception e){
..
}
Річ у тому, що, коли він намагається викликати якийсь метод, він викидає
InvocationTargetException
замість якогось іншого очікуваного винятку (конкретно ArrayIndexOutOfBoundsException
). Оскільки я насправді знаю, який метод викликається, я перейшов до цього коду методу і додав блок пробного входу для рядка, який передбачається кинути, ArrayIndexOutOfBoundsException
і він справді кинув, ArrayIndexOutOfBoundsException
як очікувалося. Однак при підйомі вгору якимось чином змінюється на InvocationTargetException
і в коді вище catch(Exception e)
e є, InvocationTargetException
а не так, ArrayIndexOutOfBoundsException
як очікувалося.
Що може спричинити таку поведінку чи як я можу перевірити таке?