一、InvocationTargetException(一个检查型异常)
在讲动态代理时说到,如果被代理对象方法抛出异常时则Method的invoke()方法会抛出InvocationTargetException;下面具体来看一下
-
InvocationTargetException是一个检查的异常,它包装被调用的方法或构造函数抛出的异常。
- 方法列表:
- 二 、UndeclaredThrowableException(是一个运行时异常)
-
简单来说:在InvocationHandler的invoke()方法中,若有检查时异常则该方法会将检查时异常包装为UndeclaredThrowableException异常向上抛出,若是运行时异常则抛出的为原异常
-
通过着两个异常的讲解我们就可以知道若被代理对象抛出异常,通常会出现如下的情况:
-
这就意味着如果不做处理的话就会出现通过动态代理后真实的异常不能被上层捕获到,解决这个问题方法如下:(spring中也是这样处理的)
-
参考文章:http://byteliu.com/2019/01/25/UndeclaredThrowableException%E6%8E%A2%E7%A7%98/