侧边栏壁纸
博主头像
itachi博主等级

我一路向北,离开有你的季节

  • 累计撰写 10 篇文章
  • 累计创建 8 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用JDK动态代理捕获自定义异常

itachi
2023-08-16 / 0 评论 / 0 点赞 / 533 阅读 / 159 字
温馨提示:
本文最后更新于 2023-08-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

在使用JDK动态代理的时候,捕获异常的只有JDK代理的预置异常

try {
	method.invoke(clazz, param);
} catch (IllegalAccessException e) {
	throw new RuntimeException(e);
} catch (IllegalArgumentException e) {
	throw new RuntimeException(e);
} catch (InvocationTargetException e) {
	throw new RuntimeException(e);
}

但是有时候代理方法需要自定义异常,这个时候自定义的异常无法在这里捕获,所以针对这种情况需要特殊处理,修改上述代码如下

try {
	method.invoke(clazz, param);
} catch (Exception e) {
	// 自定义异常
	if (Objects.equals(e.getCause().getClass(), CustomException.class)) {
		CustomException customException = (CustomException) e.getCause();
		// 处理自定义异常
	} else { 
		// 系统抛出的异常在这里
		throw new RuntimeException(e);
	}
}
0

评论区