1. Обзор
В этой статье мы кратко рассмотрим класс Throwables Google Guava.
Этот класс содержит набор статических служебных методов для обработки исключений и:
- распространение
- обработка цепочки причин
2. Зависимость от Maven
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
3. Распространение
Предположим, мы взаимодействуем с некоторым кодом, который выдает общий Throwable
.
В большинстве случаев мы хотим преобразовать это в RuntimeException
, если это прямой подкласс Throwable
.
Однако, если это экземпляр 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
вернет рекурсивную трассировку стека исключения.
5. Вывод
В этом руководстве мы проиллюстрировали несколько примеров, в которых мы можем использовать класс Throwables
Guava для упрощения работы с исключениями.
Как всегда, полный исходный код доступен на GitHub .