Wie wird die Zielausnahme einer InvocationTargetException erneut ausgelöst? Ich habe eine Methode, die Reflektion verwendet, um die Methode invoke() innerhalb einer meiner Klassen aufzurufen. Wenn jedoch eine Ausnahme in meinem Code ausgelöst wird, mache ich mir keine Gedanken über die InvocationTargetException und möchte nur die Zielausnahme. Hier ein Beispiel:Erneutes Auslösen einer InvocationTargetException-Zielausnahmebedingung
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
}
}
Das primäre Problem, das ich bin vor, dass throw e.getCause Aufruf(); wirft keine Exception, sondern wirft Throwable. Vielleicht nähere ich mich dem falsch?
+1 für das Hinzufügen in Typ Überprüfung. –
Wie können Sie eine Null-Ursache für eine InvocationTargetException haben? –
Ich glaube nicht, dass es jemals die Ursache sein wird, wenn diese Ausnahme von Method.invoke() ausgelöst wird, aber InvocationTargetException hat einen Konstruktor, der ein Null-Ziel zulässt. In anderen Situationen könnte es also null sein. Ich weiß nicht sicher, aus dem Method.invoke API doc, wenn ein Fehler innerhalb einer InvocationTargetException von geworfen wird, wie es ist. –