前一段时间做项目的时候遇到了InvocationTargetException异常,这是个很奇怪的异常。原本通过反射去调用类里面的方法,该方法里面抛出的异常都是InvocationTargetException。这个异常的getMessage返回值为空,并没有覆写Exception的getMessage方法。所以如果要得到InvocationTargetException的这个异常信息。需要getTargetException得到这个目标异常信息。
比方说:
@Override
public String callService(String head, String body) {
// TODO Auto-generated method stub
BaseReturn baseReturn = new BaseReturn();
try {
checkInputParam(head, body);
return exec(head, body);
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
logger.error(e.getTargetException().getMessage());
baseReturn.setResultCode(Common.FAIL);// 设置错误结果码
baseReturn.setErrorInfo(e.getTargetException().getMessage());// 设置错误信息
e.printStackTrace();
} catch (Exception e) {
logger.error(e.getMessage());
baseReturn.setResultCode(Common.FAIL);// 设置错误结果码
baseReturn.setErrorInfo(e.getMessage());// 设置错误信息
e.printStackTrace();
}
return JSONObject.toJSONString(baseReturn);
}
以上代码这样写,可以兼容所有异常。如果抛出的是InvocationTargetException则直接捕获。如果是其他异常则让Exception 去捕获。
相关推荐
标题中的“解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException”指的是在使用Apache Axis2的CodegenWizardPlugin工具时遇到的一个错误。这个工具是Axis2框架的一部分,用于自动生成...
如果方法内部抛出了异常,但没有被捕获和处理,就会导致InvocationTargetException。 3. **数据验证**:确保传入服务的方法参数有效且符合预期。无效或不匹配的数据类型可能导致运行时异常。 4. **配置检查**:...
`AssertionError`是Java中用于断言失败的异常,而`InvocationTargetException`则是在调用方法时抛出的异常,通常与方法内部的异常处理有关。 解决这个问题的方法可能有以下几点: 1. **检查版本兼容性**:确保你的...
import java.lang.reflect.InvocationTargetException; import java.sql.Timestamp; import java.util.Collection; import java.util.Date; import java.util.Map; import java.util.Map.Entry; import org.apache....
需要注意的是,当使用`newInstance()`方法时,如果构造函数抛出了异常,那么这些异常会被封装在InvocationTargetException异常中。因此,实际捕获和处理的是InvocationTargetException异常。 总结起来,处理...
9. **java.lang.reflect.InvocationTargetException** 当调用方法时,如果被调用的方法抛出了异常,那么这个异常会被封装在这个InvocationTargetException中。在JSP中,这可能发生在使用反射API执行方法时。 10. *...
在执行这一操作时,我们同样需要注意捕获并处理可能抛出的NoSuchMethodException、IllegalAccessException、InvocationTargetException等异常。NoSuchMethodException发生在无法找到指定参数类型匹配的构造函数时,...
除了捕获该异常外,还应当考虑捕获反射调用时可能抛出的其他异常,如`NoSuchMethodException`、`IllegalAccessException`、`InvocationTargetException`等。每种异常都有其特定的含义和处理方式,合适的异常处理能够...
6. 具体异常类型的处理:在处理反射中可能出现的异常时,我们需要分别处理NoSuchMethodException、IllegalAccessException和InvocationTargetException这些异常。它们分别表示没有找到相应的方法、方法无法访问以及...
然而,在访问私有字段或调用私有方法的过程中,仍然可能抛出IllegalAccessException或InvocationTargetException异常。我们需要在catch块中妥善处理这些异常。如果存在其他异常(例如实例化对象失败等),也应当在另...
在具体的实现中,`ReflectionUtils`类可能还会涉及更多的功能,例如利用缓存来提升性能,以及对异常的处理,如`InvocationTargetException`。通过这些方法,可以在运行时动态地创建实例、调用方法或访问字段,即便...
import java.lang.reflect.InvocationTargetException; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime....
11. **反射异常**:不当使用`Class.forName()`或`Method.invoke()`可能导致`ClassNotFoundException`和`InvocationTargetException`。书中会解释如何安全地使用反射。 12. **异常链**:当一个异常在处理另一个异常...
如果在调用过程中传入了不兼容类型的元素,会抛出java.lang.reflect.InvocationTargetException异常,表明反射调用的目标方法抛出了异常。开发者需要妥善处理这些异常,避免程序崩溃。 除了方法调用和字段访问,...
需要注意的是,BeanUtils在处理类型转换时可能会抛出异常,如`IllegalAccessException`, `InvocationTargetException`等,因此在实际使用中需要进行异常处理。 在提供的课件“JavaWeb程序设计入门课件BeanUtils工具...
} catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } ``` #### 2.2 属性获取(getProperty) 与之对应的是`getProperty()`方法,用于获取JavaBean的属性值: ```java try...
- 调用BeanUtils方法时,可能会抛出IllegalAccessException和InvocationTargetException,需要进行异常处理。 - 如果属性名不完全匹配或者类型转换失败,BeanUtils会抛出异常,因此需要确保对象属性名的正确性和类型...
- 需要捕获 `IllegalAccessException`、`NoSuchMethodException` 和 `InvocationTargetException` 异常。 - 这里假设 `Hashtable` 中存储的是 `ClassA`、`ClassB` 和 `ClassC` 类的对象,且这些类中都定义了名为 `...