Chà, tôi đã cố gắng hiểu và đọc những gì có thể gây ra nhưng tôi không thể hiểu được:
Tôi có cái này ở đâu đó trong mã của tôi:
try{
..
m.invoke(testObject);
..
} catch(AssertionError e){
...
} catch(Exception e){
..
}
Điều đó là, khi nó cố gắng gọi một số phương thức, nó sẽ ném
InvocationTargetException
thay vì một số ngoại lệ dự kiến khác (cụ thể ArrayIndexOutOfBoundsException
). Vì tôi thực sự biết phương thức nào được gọi, tôi đã đi thẳng vào mã phương thức này và thêm một khối thử bắt cho dòng giả sử ném ArrayIndexOutOfBoundsException
và nó thực sự đã ném ArrayIndexOutOfBoundsException
như mong đợi. Tuy nhiên, khi đi lên nó bằng cách nào đó thay đổi để InvocationTargetException
và trong đoạn code trên catch(Exception e)
e là InvocationTargetException
và không ArrayIndexOutOfBoundsException
như mong đợi.
Điều gì có thể gây ra một hành vi như vậy hoặc làm thế nào tôi có thể kiểm tra một điều như vậy?