1

Throwable は例外階層の最上位にあり、その 2 つの直接のサブクラスは次のとおりです。

  1. Exception
  2. Error

最も有名なプログラミングの本 (Herbert Schildt の完全なリファレンス) によると、例外キャッチして処理することができますが、「タイプ ERROR の例外は、取り除くことができないいくつかの問題が原因であるため、キャッチして処理することはできません!

しかし、このコードは正常に機能しました。方法や理由がわかりません。

コメントする前に、コード フラグメントを実行してください。奇妙なことは、それが機能し、両方の println ステートメントが実行されることです。

class ExceptionTest {
    public static void main(String...args) {
        try {
            throw new StackOverflowError();
        } catch(Error e) {
            System.out.println("caught and processed " + e);
        }
        System.out.println("finished");
    }
}
4

2 に答える 2

1

ExceptionそしてErrorどちらも釣れます。
しかし、その後は回復できませんError。つまり、キャッチしても意味がありません。Error

たとえば、OutOfMemoryError 中にキャッチすると、GC が最初にメモリを解放できない可能性があるため、再びエラーが発生します。

から回復できますException

たとえば、指定されたファイルが利用できない場合に FileNotFoundException が発生し、それをキャッチして他のファイルを提供し、プログラムを続行できます。

于 2013-09-17T11:10:32.507 に答える