java-error-catch
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プロジェクト]にあります。