`
Neil_yang
  • 浏览: 130570 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

InvocationTargetException异常的处理

阅读更多

InvocationTargetException异常的处理

    InvocationTargetException 是一种包装由调用方法或构造方法所抛出异常的受查异常。这个异常并不是Eclipse插件开发特有的,而是标准JDK中的,它定义在 java.lang.reflect包下。在进行Java开发的时候很少会接触到这个异常,不过在进行Eclipse插件开发中则不同,很多API都声明抛出此类异常,因此必须对此异常进行处理。

    例如,我们开发一个方法用来统一处理异常:
    

private static void handleException(Exception e)
    {
        MessageDialog.openError(Activator.getDefault().getWorkbench()
                .getDisplay().getActiveShell(), "error", e.getMessage());
        e.printStackTrace();
    }

     我们发现当传递来的参数e为InvocationTargetException 的时候弹出的对话框中的消息是空的,查看InvocationTargetException 的源码得知InvocationTargetException 并没有覆盖getMessage方法,所以消息当然是空的了。我们需要调用InvocationTargetException 的getTargetException方法得到要被包装的异常,这个异常才是真正我们需要的异常。修改代码如下所示:
  

  private static void handleException(Exception e)
    {
        String msg = null;
        if (e instanceof InvocationTargetException)
        {
            Throwable targetEx = ((InvocationTargetException) e)
                    .getTargetException();
            if (targetEx != null)
            {
                msg = targetEx.getMessage();
            }
        } else
        {
            msg = e.getMessage();
        }
        MessageDialog.openError(Activator.getDefault().getWorkbench()
                .getDisplay().getActiveShell(), "error", msg);
        e.printStackTrace();
    }

 

分享到:
评论

相关推荐

    axis2 InvocationTargetException

    如果方法内部抛出了异常,但没有被捕获和处理,就会导致InvocationTargetException。 3. **数据验证**:确保传入服务的方法参数有效且符合预期。无效或不匹配的数据类型可能导致运行时异常。 4. **配置检查**:...

    解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException

    标题中的“解决axis2-CodegenWizardPluginBUG- java.lang.reflect.InvocationTargetException”指的是在使用Apache Axis2的CodegenWizardPlugin工具时遇到的一个错误。这个工具是Axis2框架的一部分,用于自动生成...

    scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetExcep

    `AssertionError`是Java中用于断言失败的异常,而`InvocationTargetException`则是在调用方法时抛出的异常,通常与方法内部的异常处理有关。 解决这个问题的方法可能有以下几点: 1. **检查版本兼容性**:确保你的...

    jsp常见异常总结 希望有所帮助

    当调用方法时,如果被调用的方法抛出了异常,那么这个异常会被封装在这个InvocationTargetException中。在JSP中,这可能发生在使用反射API执行方法时。 10. **java.lang.StackOverflowError** 当Java虚拟机的堆栈...

    java深度复制源代码

    public static final void setValue(Object t, String propertyName, Object val) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, IntrospectionException {...} ...

    实现RCP在线升级说明

    public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { // 获取当前站点 ILocalSite localSite = UpdateManager.getDefault().getLocalSite(); // 创建...

    JavaWeb程序设计入门课件BeanUtils工具共6页

    需要注意的是,BeanUtils在处理类型转换时可能会抛出异常,如`IllegalAccessException`, `InvocationTargetException`等,因此在实际使用中需要进行异常处理。 在提供的课件“JavaWeb程序设计入门课件BeanUtils工具...

    框架beanutils

    } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } ``` #### 2.2 属性获取(getProperty) 与之对应的是`getProperty()`方法,用于获取JavaBean的属性值: ```java try...

    BeanUtils工具包

    - 调用BeanUtils方法时,可能会抛出IllegalAccessException和InvocationTargetException,需要进行异常处理。 - 如果属性名不完全匹配或者类型转换失败,BeanUtils会抛出异常,因此需要确保对象属性名的正确性和类型...

    Java工具beanutils

    4. 处理异常:在处理JavaBean属性时,BeanUtils会捕获并处理可能出现的异常,如`IllegalAccessException`和`InvocationTargetException`等,这使得代码更加简洁,降低了处理异常的复杂性。 5. 国际化支持...

    commons-beanutils-1.8.0.rar

    5. **异常处理**:BeanUtils库在遇到错误时,通常会抛出`PropertyVetoException`、`IllegalAccessException`、`InvocationTargetException`等异常,这有助于开发者追踪和调试代码。 6. **国际化支持**:虽然1.8.0...

    commons-beanutils-1.8.3.jar

    6. **异常处理**:在进行反射操作时,可能会出现`NullPointerException`或`InvocationTargetException`等异常。BeanUtils通常会捕获这些异常并转换为更易理解的`BeanException`,方便开发者进行错误处理。 7. **...

    BeanUtils开发包

    5. **处理异常**:BeanUtils会捕获并包装反射过程中可能出现的异常,如`IllegalAccessException`和`InvocationTargetException`,从而简化了错误处理。 6. **自定义转换**:通过注册自定义的转换器,BeanUtils可以...

    lomok.docx

    } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { // 处理异常 } ``` 需要注意的是,虽然 PropertyUtils 支持类型转换,但它也有一些限制。例如,它不支持 `java.util....

    java常见错误分析20例电子书

    11. **反射异常**:不当使用`Class.forName()`或`Method.invoke()`可能导致`ClassNotFoundException`和`InvocationTargetException`。书中会解释如何安全地使用反射。 12. **异常链**:当一个异常在处理另一个异常...

    Commons BeanUtils包说明

    - **异常处理**:在处理Bean操作时,BeanUtils会捕获并包装可能抛出的异常,如`InvocationTargetException`和`NoSuchMethodException`,提供更友好的错误信息。 3. **IOTest.java和Test2.java中的应用示例** 这两...

    commons-beanutils 源码

    - BeanUtils在处理异常时,通常会捕获并包装为`BeanException`或`InvocationTargetException`,提供友好的错误信息,便于开发者定位问题。 - 例如,在调用不存在的属性或者类型转换失败时,会抛出相应的异常。 4....

    beanutils的jar包

    } catch (IllegalAccessException | InvocationTargetException e) { // 处理异常 } ``` 总结来说,Apache Commons BeanUtils是Java开发中一个强大且实用的工具库,它简化了Java Bean对象的属性操作,提供了属性...

    Java基础_第二阶段-day18每日作业卷1

    - **处理异常**:由于BeanUtils操作涉及反射,可能出现`IllegalAccessException`或`InvocationTargetException`等异常,需要进行捕获处理。 3. **使用示例**: - **训练案例3**:创建一个`Cat`类,包含name、age...

    httpreq转对象

    在执行反射操作时,可能会抛出多种异常,包括`IntrospectionException`、`IllegalArgumentException`、`IllegalAccessException`和`InvocationTargetException`。在代码中,通过try-catch块捕获并记录这些异常,确保...

Global site tag (gtag.js) - Google Analytics