広告

Java : RuntimeException (非チェック例外) - API使用例

RuntimeException (Java SE 22 & JDK 22) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
API仕様書のおともにどうぞ。


概要

RuntimeExceptionは、Java仮想マシンの通常の処理でスローすることができる各種の例外のスーパー・クラスです。

クラス構成

本記事では、RuntimeException のサブクラスの SampleRuntimeException を定義して、それをメインにコード例を記載していきます。

関連 : 例外 vs. 戻り値でエラーチェック

@SuppressWarnings("serial")
public class SampleRuntimeException extends RuntimeException {

    public SampleRuntimeException() {
    }

    public SampleRuntimeException(String message) {
        super(message);
    }

    public SampleRuntimeException(String message, Throwable cause) {
        super(message, cause);
    }

    public SampleRuntimeException(Throwable cause) {
        super(cause);
    }

    public SampleRuntimeException(String message, Throwable cause,
                                  boolean enableSuppression,
                                  boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}
public class Main {

    public static void main(String[] args) {
        try {
            func1();
        } catch (SampleRuntimeException ex) {

            final RuntimeException e = ex;
            e.printStackTrace();

            // 結果
            // ↓
            //SampleRuntimeException
            //	at Main.func2 ...
            //	at Main.func1 ...
            //	at Main.main ...
            // ...
        }
    }

    private static void func1() {
        func2();
    }

    private static void func2() {
        throw new SampleRuntimeException();
    }
}

コンストラクタ

RuntimeException ()

詳細メッセージにnullを使用して、新しい実行時例外を構築します。

final RuntimeException e = new SampleRuntimeException();
System.out.println(e); // SampleRuntimeException

RuntimeException (String message)

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

final RuntimeException e = new SampleRuntimeException("abcde");
System.out.println(e); // SampleRuntimeException: abcde
System.out.println(e.getMessage()); // abcde

RuntimeException (String message, Throwable cause)

指定された詳細メッセージおよび原因を使用して新しい実行時例外を構築します。

final RuntimeException cause = new SampleRuntimeException("XYZ");
final RuntimeException e = new SampleRuntimeException("abcde", cause);

System.out.println(e); // SampleRuntimeException: abcde
System.out.println(e.getMessage()); // abcde

System.out.println(e.getCause()); // SampleRuntimeException: XYZ
System.out.println(e.getCause().getMessage()); // XYZ

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

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

final RuntimeException cause = new SampleRuntimeException("XYZ");
final RuntimeException e = new SampleRuntimeException("abcde", cause, true, true);

System.out.println(e); // SampleRuntimeException: abcde
System.out.println(e.getCause()); // SampleRuntimeException: XYZ

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

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

System.out.println(e.getStackTrace().length > 0); // true
// enableSuppression = false
final RuntimeException cause = new SampleRuntimeException("XYZ");
final RuntimeException e = new SampleRuntimeException("abcde", cause, false, true);

System.out.println(e); // SampleRuntimeException: abcde
System.out.println(e.getCause()); // SampleRuntimeException: XYZ

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

System.out.println(e.getStackTrace().length > 0); // true
// writableStackTrace = false
final RuntimeException cause = new SampleRuntimeException("XYZ");
final RuntimeException e = new SampleRuntimeException("abcde", cause, true, false);

System.out.println(e); // SampleRuntimeException: abcde
System.out.println(e.getCause()); // SampleRuntimeException: XYZ

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

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

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

RuntimeException (Throwable cause)

指定された原因および(cause==null ? null : cause.toString()) (通常、causeのクラスおよび詳細メッセージが含まれます)の詳細メッセージを使用して、新しいランタイム例外を作成します。

final RuntimeException cause = new SampleRuntimeException("XYZ");
final RuntimeException e = new SampleRuntimeException(cause);

System.out.println(e); // SampleRuntimeException: SampleRuntimeException: XYZ
System.out.println(e.getMessage()); // SampleRuntimeException: XYZ

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


関連記事

ページの先頭へ