Java : Error (エラー) - API使用例

Error (Java SE 18 & JDK 18) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。


概要

ErrorはThrowableのサブクラスで、通常のアプリケーションであればキャッチすべきではない重大な問題を示します。 そうしたエラーの大部分は異常な状態です。

クラス構成

Errorは、アプリケーションが復帰できないような重大な問題が発生したときにスローされます。

try {
    final var array = new int[1000000000];
} catch (Error e) {
    System.out.println(e);
}

// 結果
// ↓
//java.lang.OutOfMemoryError: Java heap space

上記の例では Error をキャッチしていますが、基本的にはエラーをキャッチするのはおすすめしません。
そのあたりの詳しいことは下記の記事にて解説しています。

もし興味がありましたら、そちらもご参照いただけたら幸いです。


コンストラクタ

Error ()

詳細メッセージにnullを使用して、新しいエラーを構築します。

final var e = new Error();
System.out.println(e); // java.lang.Error

Error (String message)

指定された詳細メッセージを使用して、新規エラーを構築します。

final var e = new Error("abcd");
System.out.println(e); // java.lang.Error: abcd
System.out.println(e.getMessage()); // abcd

Error (String message, Throwable cause)

指定された詳細メッセージおよび原因を使用して新規エラーを構築します。

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

System.out.println(e); // java.lang.Error: abcd
System.out.println(e.getMessage()); // abcd

System.out.println(e.getCause()); // java.lang.Error: XYZ
System.out.println(e.getCause().getMessage()); // XYZ

Error (String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)

指定された詳細メッセージ、原因、抑制の有効化または無効化、書込み可能スタック・トレースの有効化または無効化に基づいて、新しいエラーを構築します。

class SampleError extends Error {
    SampleError(String message, Throwable cause,
                boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}
final var cause = new Error("XYZ");
final var e = new SampleError("abcd", cause, true, true);

System.out.println(e); // SampleError: abcd
System.out.println(e.getCause()); // java.lang.Error: XYZ

e.addSuppressed(new Error("E1"));
e.addSuppressed(new Error("E2"));

// [java.lang.Error: E1, java.lang.Error: E2]
System.out.println(Arrays.toString(e.getSuppressed()));

System.out.println(e.getStackTrace().length > 0); // true
// enableSuppression = false
final var cause = new Error("XYZ");
final var e = new SampleError("abcd", cause, false, true);

System.out.println(e); // SampleError: abcd
System.out.println(e.getCause()); // java.lang.Error: XYZ

e.addSuppressed(new Error("E1"));
e.addSuppressed(new Error("E2"));
System.out.println(Arrays.toString(e.getSuppressed())); // []

System.out.println(e.getStackTrace().length > 0); // true
// writableStackTrace = false
final var cause = new Error("XYZ");
final var e = new SampleError("abcd", cause, true, false);

System.out.println(e); // SampleError: abcd
System.out.println(e.getCause()); // java.lang.Error: XYZ

e.addSuppressed(new Error("E1"));
e.addSuppressed(new Error("E2"));

// [java.lang.Error: E1, java.lang.Error: E2]
System.out.println(Arrays.toString(e.getSuppressed()));

System.out.println(e.getStackTrace().length); // 0

Error (Throwable cause)

指定された原因と詳細メッセージ(cause==null ? null : cause.toString())を持つ新しいエラーを構築します(これには通常、causeのクラスと詳細メッセージが含まれる)。

final var cause = new Error("XYZ");
final var e = new Error(cause);

System.out.println(e); // java.lang.Error: java.lang.Error: XYZ
System.out.println(e.getMessage()); // java.lang.Error: XYZ

System.out.println(e.getCause()); // java.lang.Error: 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」をご参照ください。


関連記事

ページの先頭へ