¿Cómo se vuelve a lanzar la excepción de destino de una InvocationTargetException. Tengo un método que usa la reflexión para llamar al método invoke() dentro de una de mis clases. Sin embargo, si hay una excepción lanzada dentro de mi código, no me preocupa la InvocationTargetException y solo deseo la excepción de destino. Aquí hay un ejemplo:Volver a lanzar una excepción de destino 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
}
}
El problema principal al que me enfrento es que la llamada arroja e.getCause(); no arroja una excepción, sino que lanza una Throwable. Tal vez me estoy acercando a esto incorrectamente?
+1 para agregar en la comprobación de tipos. –
¿Cómo puede tener una causa 'nula' para una InvocationTargetException? –
No creo que alguna vez sea la causa cuando Method.invoke() arroje esta excepción, pero InvocationTargetException tiene un constructor que permite un objetivo nulo, por lo que en otras situaciones, puede ser nulo. No estoy seguro, desde el documento API de Method.invoke, si un error está dentro de una InvocationTargetException de throw as is. –