UndeclaredThrowableException

本文详细介绍了在Java Spring项目中遇到的UndeclaredThrowableException异常,探讨了其产生的原因,主要是由于在动态代理过程中,如果InvocationHandler的invoke方法抛出了一个受检异常,且此异常未在被代理方法的throws子句中声明,就会引发此异常。通过实例分析了cglib动态代理如何处理此类异常,并提出了将其作为代码标准的建议。
摘要由CSDN通过智能技术生成

UndeclaredThrowableException

最近在项目中遇到了 java.lang.reflect.UndeclaredThrowableException 的异常,就查了下,这里做个简单总结

UndeclaredThrowableException产生的原因

从字面上看这是一个未声明异常的异常,单从字面意思看我们会陷入一个误区,程序抛出一个未声明的异常,那应该就是非受检异常了,比如RuntimeException、Error。

找到这个类,我们发现它继承了 RuntimeException ,并且有个属性 undeclaredThrowable

 /**
     * the undeclared checked exception that was thrown
     * @serial
     */
    private Throwable undeclaredThrowable;

通过属性注释,我们知道这个异常其实指的是未声明的受检异常,那问题就出现了,程序什么情况下会抛出未声明的受检异常。带着这个疑问我们看下类的说明:

Thrown by a method invocation on a proxy inst

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值