在最近一段时间的工作中,积累了几点异常处理的经验,怕时间久了就淡忘了,因此写下本文记录下来,一遍日后总结和查看。
1.在通过反射执行方法的时,如Method.invoke(),如果被反射执行的方法体抛出了Exception,这个异常会被包装成InvocationTargetException重新抛出,下面是jdk里面的源码:
public Object invoke(Object obj, Object... args)
throws IllegalAccessException, IllegalArgumentException,
InvocationTargetException
{
...........此处省略.....
}
比如反射方法里抛出了NullPointException,则Method.invoke方法抛出的是InvocationTargetException,而不是NullPointException,见下面的例子,此处抛出的就是InvocationTargetException。
但是InvocationTargetException太过于宽泛,在trouble shouting的时候,不能给人非常直观的信息,所以在处理反射方法异常的时候,我们需要把这个InvocationTargetException的targetException提取处理,重新抛出,因为这个才是对我们分析程序bug真正有帮助的异常:
public class InvokeException {
@SuppressWarnings("null")
public void testException(){
String nullString = null;
nullString.toString();
}
public static void main(String[] args) throws Throwable {
// TODO Auto-generated method stub
try{
InvokeException invokeException = new InvokeException();
Method method = invokeException.getClass().getMethod("testException");
method.invoke(invokeException);
}catch (Exception e) {
if(e instanceof InvocationTargetException){
throw ((InvocationTargetException) e).getTargetException();
}else{
//doXXX()
}
}
}
}
下一篇讲介绍如何利用Spring的aop来把程序中的check exception转化成自定义的uncheck exception.
- 大小: 43.4 KB
分享到:
相关推荐
如果方法内部抛出了异常,但没有被捕获和处理,就会导致InvocationTargetException。 3. **数据验证**:确保传入服务的方法参数有效且符合预期。无效或不匹配的数据类型可能导致运行时异常。 4. **配置检查**:...
然而,在运行此插件时,由于某些原因可能会抛出`java.lang.reflect.InvocationTargetException`,这是一个反射调用异常,通常表示在调用某个方法时发生了异常。 `InvocationTargetException`通常作为Java标准库中的...
`AssertionError`是Java中用于断言失败的异常,而`InvocationTargetException`则是在调用方法时抛出的异常,通常与方法内部的异常处理有关。 解决这个问题的方法可能有以下几点: 1. **检查版本兼容性**:确保你的...
在apache上下载的axis2的eclipse插件,使用axis2-eclipse-codegen-wizard时,最后老是报InvocationTargetException异常。 现在上传的版本已经修正,和原版功能完全一样
MyEclipse axis2 wsdl java.lang.reflect.invocationtargetexception code gen 大家要注意一定要仔细,这个问题基本上缺少包引起的,而且一定要clean 如果需要axis2插件 以及这个plugins中的包在我的其他资源里面有
java.lang.reflect.invocationtargetexception问题的解决方法之一
解决使用wsdl生成java客户端报错:java.lang.reflect.invocationtargetexception的方法之一
在分布式服务框架 Dubbo 中,异常处理是必不可少的一部分。Dubbo 提供了强大的异常处理机制,使得服务提供者能够向消费者传递自定义异常,从而帮助消费者更好地理解和处理服务调用中的错误情况。本文将深入探讨如何...
faultString: java.lang.reflect.InvocationTargetException faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: AxisFault faultCode: {...
当调用方法时,如果被调用的方法抛出了异常,那么这个异常会被封装在这个InvocationTargetException中。在JSP中,这可能发生在使用反射API执行方法时。 10. **java.lang.StackOverflowError** 当Java虚拟机的堆栈...
免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者
这样,每当应用程序中抛出`Exception`或其子类时,系统会自动跳转至指定的错误页面,从而简化了异常处理流程,提高了系统的健壮性。 #### 三、异常层次结构设计 为了更好地管理和响应不同类型的异常,建议构建一套...
1、本测试demo使用mavan管理jar 2、重点参考TestSoapUI5 3、重写WsdlTestCaseRunner 4、需要单独配置maven仓库http://www.soapui.org/repository/maven2/
- **异常**:抛出`IntrospectionException`、`IllegalArgumentException`、`IllegalAccessException`、`InvocationTargetException`等异常。 - **设置Bean的属性值**: ```java public static final void ...
在IT行业中,报表生成是企业应用中不可或缺的一部分,而`iReport`则是一款强大的报表设计工具,它与MyEclipse、Struts2等框架结合,能够帮助开发者轻松创建复杂的业务报表。本文将深入探讨`iReport`在Java开发中的...
然而,在使用jQuery过程中,开发者有时会遇到JavaScript控制台抛出“Uncaught TypeError: Illegal invocation”错误。这个错误通常不是由jQuery自身引起的,而是与JavaScript作用域及上下文有关。 当我们进行Ajax...
Java的Web服务支持是Java平台在企业级应用开发中的一项重要功能,它允许不同系统间的应用程序通过网络交换数据,实现跨平台的互操作性。Web服务基于开放的标准,如XML(可扩展标记语言)、WSDL(Web服务描述语言)和...
这一操作旨在让系统能够识别出需要发布的Java类及其所属的jar包。 #### 设置jar文件目录 在图形界面中,用户可以通过点击选择按钮来定位并加载所需的jar文件。此步骤对于后续正确解析和展示jar包中的所有类和方法...