Enquête sur la cause de java.lang.reflect.InvocationTargetException
Dans la réflexion Java, l'InvocationTargetException est rencontrée lorsque tentative d'invocation d'une méthode via réflexion, indiquant qu'une exception sous-jacente non vérifiée s'est produite. Cela peut se produire même lorsque la méthode est censée lever une exception spécifique, telle que ArrayIndexOutOfBoundsException dans l'exemple de code fourni.
Explication possible
Lors de l'utilisation de la réflexion, une couche d'abstraction supplémentaire est introduite, qui enveloppe toute exception levée par l'invocation de la méthode réelle dans une InvocationTargetException. Cela permet de faire la distinction entre les exceptions provenant de l'appel de réflexion lui-même (par exemple, les arguments non valides) et celles générées dans la méthode invoquée.
Déballage de l'exception sous-jacente
Pour y accéder l'exception d'origine, on peut déballer l'InvocationTargetException en utilisant la méthode getCause(). Cela révélera l'exception sous-jacente, qui pourra ensuite être gérée de manière appropriée.
Voici un exemple :
<code class="java">try { m.invoke(testObject); } catch (InvocationTargetException ex) { Throwable cause = ex.getCause(); if (cause instanceof ArrayIndexOutOfBoundsException) { // Handle ArrayIndexOutOfBoundsException here } }</code>
Alternativement, on peut utiliser printStackTrace() pour afficher le appelez la pile et identifiez la section « Causé par : », qui fournira des informations sur l'exception sous-jacente.
Approche prudente
Il est important de faire preuve de prudence lors de l'utilisation de printStackTrace() dans le code de production car il peut potentiellement exposer des informations sensibles. À des fins de journalisation, il est recommandé d'utiliser la méthode getCause() et de gérer explicitement l'exception sous-jacente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!