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