1. 概要

この記事では、GoogleGuavaの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 メソッドは、例外の再帰的なスタックトレースを返します。

5. 結論

このチュートリアルでは、GuavaのThrowablesクラスを使用して例外の処理を簡素化できるいくつかの例を示しました。

いつものように、完全なソースコードはGitHubから入手できます。