広告

Java : ExecutionException - API使用例

ExecutionException (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。


概要

例外をスローすることによって中断したタスクの結果を取得しようとしたときにスローされる例外です。 この例外は、Throwable.getCause()メソッドを使用して検査できます。

クラス構成

ExecutionException は、ExecutorService で実行したタスクが例外になったときに発生する チェック例外 です。
タスクで実際に発生した例外は getCause メソッドで取得できます。

try (final var executor = Executors.newSingleThreadExecutor()) {
    final var future = executor.submit(() -> {
        System.out.println("task : start");
        throw new IllegalStateException("task error!");
    });
    future.get();
} catch (ExecutionException e) {
    System.out.println("ExecutionException! : " + e.getCause());
}

// 結果
// ↓
//task : start
//ExecutionException! : java.lang.IllegalStateException: task error!

コンストラクタ

ExecutionException ()

詳細メッセージを持たないExecutionExceptionを構築します。

protected です。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

ExecutionException (String message)

指定された詳細メッセージを持つExecutionExceptionを構築します。

protected です。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

ExecutionException (String message, Throwable cause)

指定された詳細メッセージと原因を持つExecutionExceptionを構築します。

final var cause = new IOException("XYZ");
final var e = new ExecutionException("abcd", cause);

System.out.println(e); // java.util.concurrent.ExecutionException: abcd
System.out.println(e.getMessage()); // abcd

System.out.println(e.getCause()); // java.io.IOException: XYZ
System.out.println(e.getCause().getMessage()); // XYZ

ExecutionException (Throwable cause)

指定された原因を使用してExecutionExceptionを生成します。

final var cause = new IOException("XYZ");
final var e = new ExecutionException(cause);

// java.util.concurrent.ExecutionException: java.io.IOException: XYZ
System.out.println(e);

System.out.println(e.getCause()); // java.io.IOException: XYZ
System.out.println(e.getCause().getMessage()); // XYZ

Throwableで宣言されたメソッド

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString

Java API 使用例 : Throwable」をご参照ください。


関連記事

ページの先頭へ