Перейти к основному содержимому

Введение в Guava Throwables

· 2 мин. чтения

Задача: Наибольшая подстрока без повторений

Для заданной строки s, найдите длину наибольшей подстроки без повторяющихся символов. Подстрока — это непрерывная непустая последовательность символов внутри строки...

ANDROMEDA 42

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 .