Javaのキャッチブロックでエラーが発生しますか?

1. 概要

この短い記事では、Javaエラーを適切にキャッチする方法を示し、それが意味をなさない場合について説明します。
Javaの__Throwable__sの詳細については、https://www.baeldung.com/java-exceptions [Javaの例外処理]の記事をご覧ください。

2. エラーをキャッチする

Javaの_java.lang.Error_クラスは_java.lang.Exception_を継承しないため、キャッチするためにcatchステートメントで_Error_基本クラス、またはキャプチャする特定の_Error_サブクラスを宣言する必要があります。 。
したがって、次のテストケースを実行すると、合格します。
@Test(expected = AssertionError.class)
public void whenError_thenIsNotCaughtByCatchException() {
    try {
        throw new AssertionError();
    } catch (Exception e) {
        Assert.fail(); // errors are not caught by catch exception
    }
}
ただし、次の単体テストでは、catchステートメントがエラーをキャッチすることを想定しています。
@Test
public void whenError_thenIsCaughtByCatchError() {
    try {
        throw new AssertionError();
    } catch (Error e) {
        // caught! -> test pass
    }
}
  • Java Virtual Machineは、メモリ不足やスタックオーバーフローなど、回復できない重大な問題を示すエラーをスローすることに注意してください。

    したがって**、エラーをキャッチする非常に適切な理由が必要です!**

3. 結論

この記事では、__ Error__sがいつ、どのようにJavaでキャッチされるかを見ました。 コード例はhttps://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-exceptions[GitHubプロジェクト]にあります。