在最近一段时间的工作中,积累了几点异常处理的经验,怕时间久了就淡忘了,因此写下本文记录下来,一遍日后总结和查看。
1.在通过反射执行方法的时,如Method.invoke(),如果被反射执行的方法体抛出了Exception,这个异常会被包装成InvocationTargetException重新抛出,下面是jdk里面的源码:
- publicObjectinvoke(Objectobj,Object...args)
- ows<spanstyle="color:#ff0000;">IllegalAccessException</span>,IllegalArgumentException,
- InvocationTargetException
- {
- ...........此处省略.....
- }
比如反射方法里抛出了NullPointException,则Method.invoke方法抛出的是InvocationTargetException,而不是NullPointException,见下面的例子,此处抛出的就是InvocationTargetException。

但是InvocationTargetException太过于宽泛,在trouble shouting的时候,不能给人非常直观的信息,所以在处理反射方法异常的时候,我们需要把这个InvocationTargetException的targetException提取处理,重新抛出,因为这个才是对我们分析程序bug真正有帮助的异常:
- publicclassInvokeException{
- @SuppressWarnings("null")
- publicvoidtestException(){
- StringnullString=null;
- nullString.toString();
- }
- publicstaticvoidmain(String[]args)throwsThrowable{
- try{
- InvokeExceptioninvokeException=newInvokeException();
- Methodmethod=invokeException.getClass().getMethod("testException");
- method.invoke(invokeException);
- }catch(Exceptione){
- if(einstanceofInvocationTargetException){
- throw((InvocationTargetException)e).getTargetException();
- }else{
- }
- }
- }
- }
下一篇讲介绍如何利用Spring的aop来把程序中的check exception转化成自定义的uncheck exception.
分享到:
相关推荐
如果方法内部抛出了异常,但没有被捕获和处理,就会导致InvocationTargetException。 3. **数据验证**:确保传入服务的方法参数有效且符合预期。无效或不匹配的数据类型可能导致运行时异常。 4. **配置检查**:...
然而,在运行此插件时,由于某些原因可能会抛出`java.lang.reflect.InvocationTargetException`,这是一个反射调用异常,通常表示在调用某个方法时发生了异常。 `InvocationTargetException`通常作为Java标准库中的...
### MyEclipse 6.0 下 Axis2 插件的安装及解决 java.lang.reflect.InvocationTargetException #### 一、概述 在使用 MyEclipse 6.0 进行 Web 服务开发时,可能会遇到需要安装 Axis2 插件的情况。Axis2 是 Apache ...
`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学习者
6. 具体异常类型的处理:在处理反射中可能出现的异常时,我们需要分别处理NoSuchMethodException、IllegalAccessException和InvocationTargetException这些异常。它们分别表示没有找到相应的方法、方法无法访问以及...
需要注意的是,当使用`newInstance()`方法时,如果构造函数抛出了异常,那么这些异常会被封装在InvocationTargetException异常中。因此,实际捕获和处理的是InvocationTargetException异常。 总结起来,处理...
这样,每当应用程序中抛出`Exception`或其子类时,系统会自动跳转至指定的错误页面,从而简化了异常处理流程,提高了系统的健壮性。 #### 三、异常层次结构设计 为了更好地管理和响应不同类型的异常,建议构建一套...
在执行这一操作时,我们同样需要注意捕获并处理可能抛出的NoSuchMethodException、IllegalAccessException、InvocationTargetException等异常。NoSuchMethodException发生在无法找到指定参数类型匹配的构造函数时,...
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开发中的...