Guava 指南 之「Throwable」
来源:互联网 发布:正版天虹打带软件下载 编辑:程序博客网 时间:2024/05/17 23:42
异常传播
有时候,当你捕获一个异常时,你可能想将它抛到下一个try/catch
块。这样情况很常见,例如在出现RuntimeException
和Error
的情况下,不需要try/catch
块,你也不想捕获它们,但是它们仍然被try/catch
块捕获。
Guava 提供了一些工具类来简化异常传播。例如:
try { someMethodThatCouldThrowAnything();} catch (IKnowWhatToDoWithThisException e) { handle(e);} catch (Throwable t) { Throwables.propagateIfInstanceOf(t, IOException.class); Throwables.propagateIfInstanceOf(t, SQLException.class); throw Throwables.propagate(t);}
每一个方法都抛了异常,而抛出的结果,例如Throwables.propagate(t)
,可以证明编辑器抛出了一个很有用的异常。
下面是 Guava 提供的异常传播方法的摘要:
RuntimeException
或者Error
进行异常传播,或者将异常包装进RuntimeException
,可以保证异常的传播性。由于其返回类型是一个RuntimeException
,所以你可以通过throw Throwables.propagate(t)
抛出异常,而且 Java 可以识别这样的语句,并保证抛出一个异常。 void propagateIfInstanceOf(Throwable, Class) throws X 当且仅当异常实例为X
的时候,进行异常传播。 void propagateIfPossible(Throwable) 当出现RuntimeException
或者Error
时,抛出throwable
void propagateIfPossible(Throwable) 当出现RuntimeException
、Error
或者X
时,抛出throwable
Throwables.propagate
的使用
详见「为什么我们不赞成使用 Throwables.propagate」
异常原因链
Guava 提供了三个有用的方法,使得异常链的研究更加简单,通过这三个方法的签名就可以窥知一二:
翻译声明:本文翻译自 GitHub,Google Guava - ThrowablesExplained.
———— ☆☆☆ —— 返回 -> Guava 中文指南 <- 目录 —— ☆☆☆ ————
阅读全文
1 0
- Guava 指南 之「Throwable」
- Guava 指南 之「前置条件」
- Guava 指南 之「使用和避免 null」
- Guava 指南 之「通用 Object 方法」
- Google Guava 中文指南
- Throwable
- java异常之Throwable源码
- guava学习之——guava简介
- Java学习之---Throwable类浅谈
- Guava学习之Multimap
- Guava学习之BiMap
- Guava学习之Multisets
- Guava学习之旅
- Guava学习之Range
- Guava学习之RangeSet
- Guava学习之RangeMap
- Guava学习之Preconditions
- Guava之eventbus
- 登月计划 [扩展回旋阿姆斯特朗算法]
- Appium基础篇16-appium截图方法
- flask email service学习笔记-html+图片(补充)
- [Leetcode] #99 Recover Binary Search Tree
- 《Netty权威指南》基础篇--走进Java NIO
- Guava 指南 之「Throwable」
- 学习Python:逻辑回归算法
- 【笔试题】不同页面之间实现参数传递的几种方式
- Laravel5.4使用MongoDB作为默认的日志存储方式
- 勉励自己,今天开始写博客。
- <C语言经典100例>c11 水仙花数
- Leetcode606. 由二叉树构建字符串
- FragmentPagerAdapter刷新fragment记两点
- Python问题列表