Làm cách nào để ném lại ngoại lệ đích của một InvocationTargetException. Tôi có một phương thức sử dụng sự phản chiếu để gọi phương thức invoke() trong một trong các lớp của tôi. Tuy nhiên, nếu có một ngoại lệ được ném trong mã của tôi, tôi không quan tâm đến InvocationTargetException và chỉ muốn ngoại lệ đích. Dưới đây là ví dụ:Tái ném một ngoại lệ đích InvocationTargetException
public static Object executeViewComponent(String name, Component c,
HttpServletRequest request) throws Exception {
try {
return c.getClass()
.getMethod(c.getMetaData().getMethod(), HttpServletRequest.class)
.invoke(c, request);
} catch (InvocationTargetException e) {
// throw the target exception here
}
}
Vấn đề chính mà tôi đang gặp phải là gọi ném e.getCause(); không ném một ngoại lệ mà là ném một Throwable. Có lẽ tôi đang tiếp cận điều này không chính xác?
+1 để thêm vào kiểm tra loại. –
Làm thế nào bạn có thể có nguyên nhân 'null' cho một InvocationTargetException? –
Tôi không nghĩ nó sẽ là nguyên nhân khi ngoại lệ này được Method.invoke(), nhưng InvocationTargetException có một hàm tạo cho phép một đích rỗng, vì vậy trong các tình huống khác, nó có thể là null. Tôi không biết chắc chắn, từ tài liệu API Method.invoke, nếu một lỗi được gói bên trong một InvocationTargetException của ném như là. –