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
InvocationTargetExceptionthay 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 ArrayIndexOutOfBoundsExceptionvà nó thực sự đã ném ArrayIndexOutOfBoundsExceptionnhư mong đợi. Tuy nhiên, khi đi lên nó bằng cách nào đó thay đổi để InvocationTargetExceptionvà trong đoạn code trên catch(Exception e)
e là InvocationTargetExceptionvà 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?