Guava 中Throwables简介
Contents
1. 概述
在本文中,我们将快速浏览一下 Google Guava 的Throwables类。
此类包含一组用于处理异常处理的静态实用方法,并且:
- 传播
- 处理原因链
2. Maven依赖
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
3. 传播
假设我们与一些抛出通用Throwable的代码进行交互。
在大多数情况下,如果它是Throwable的直接子类,我们希望将其转换为RuntimeException。
但是,如果它是Error、RuntimeException或Exception的实例,我们可以调用propagateIfPossible 来按原样传播它:
try {
methodThatMightThrowThrowable();
} catch (Throwable t) {
Throwables.propagateIfPossible(t, Exception.class);
throw new RuntimeException(t);
}
4. 链
Guava 还提供实用方法来检查抛出的异常及其链。
Throwable getRootCause(Throwable)
getRootCause方法可以让我们得到最里面的异常,这在我们想要找到最初的原因时很有用。
List<Throwable> getCausalChain(Throwable)
此getCausalChain方法将返回层次结构中所有可抛出对象的列表。如果我们想检查它是否包含某种类型的异常,这很方便。
String getStackTraceAsString(Throwable)
getStackTraceAsString方法将返回异常的递归堆栈跟踪。