logo

InvocationTargetException

Der InvocationTargetException ist eine geprüfte Ausnahme, die eine von einer aufgerufenen Methode oder einem aufgerufenen Konstruktor ausgelöste Ausnahme enthält. Seit JDK 1.4 wurde diese Ausnahme nachgerüstet, um dem allgemeinen Ausnahmeverkettungsmechanismus zu entsprechen. Die „Zielausnahme“, die zur Erstellungszeit bereitgestellt wird und auf die über die Methode getTargetException() zugegriffen wird, ist jetzt als Ursache bekannt und kann über die Methode Throwable.getCause() sowie die „Legacy-Methode“ aufgerufen werden.

Kurz gesagt: Wenn wir eine Klasse mit Method.invoke() aufrufen, löst sie eine Ausnahme aus. es wird von der umhüllt java.lang.reflect.InvocationTargetException Klasse.

Ursache der InvokationTargetException

Die InvokationTargetException tritt hauptsächlich beim Arbeiten mit dem auf Java Reflection API und versuchen Sie, eine Methode oder einen Konstruktor in der Reflection-Ebene aufzurufen, der selbst eine zugrunde liegende Ausnahme auslöst.

Die Reflexionsschicht enthält die eigentliche Ausnahme, die von den Standardmethoden ausgelöst wird.

Mia Khalifa Alter

So lösen Sie java.lang.reflect.InvocationTargetException

Die InvocationTargetException wird durch die aufgerufene Methode verursacht, die eine Ausnahme auslöst. Die zugrunde liegende Ausnahme kann mit der Methode getCause() gefunden werden. Daher ist es notwendig, die tatsächliche Ausnahme zu finden und aufzulösen, um die InvocationTargetException aufzulösen.

es5 vs. es6
InvocationTargetException

Betrachten Sie das folgende Beispiel, das absichtlich eine Ausnahme (durch Null dividieren) in der Methode Demo() generiert, die mit Method.invoke() aufgerufen wird. Daher löst die Ausgabe sowohl die AirthmeticException (DividebyZero) als auch die InvokationTargetException aus.

TestInvokationException.java:

 import java.lang.reflect.Method; public class TestInvocationException { public static void main(String[] args) { TargetInvocation ti = new TargetInvocation(); // Accessing all the methods of TargetInvocationClass: Method[] m = TargetInvocation.class.getMethods(); try { // Invoking the first method of the TargetInvocatioClass: m[0].invoke(ti); } catch(Exception e) { // Printing the wrapper exception: System.out.println('Wrapper exception: ' + e); // Printing the 'actual' exception: System.out.println('Underlying exception: ' + e.getCause()); } } } class TargetInvocation{ public void Demo() { // Dividing by zero to intentionally throw an exception: System.out.println(10 / 0); } } 

Ausgabe:

 Wrapper exception: java.lang.reflect.InvocationTargetException Underlying exception: java.lang.ArithmeticException: / by zero