重複の可能性:
Java: チェックさ
れた例外とチェックされていない例外の説明
Java の 2 つの例外タイプに「checked」と「unchecked」という名前が付いているのはなぜですか? このタイプの例外を選択する理由は何ですか?
重複の可能性:
Java: チェックさ
れた例外とチェックされていない例外の説明
Java の 2 つの例外タイプに「checked」と「unchecked」という名前が付いているのはなぜですか? このタイプの例外を選択する理由は何ですか?
チェックされた例外は に拡張java.lang.Exception
され、チェックされていない例外は に拡張さjava.lang.RuntimeException
れますjava.lang.Error
。
Exception
extends java.lang.Throwable
、 while RuntimeException
extends Exception
、およびError
同様Exception
に extends java.lang.Throwable
.
チェックされた例外とチェックされていない例外のどちらを使用するかを決定するときは、常に次のルールを覚えておいてください。
Exception
S は、アプリケーションが処理したいケースです。RuntimeException
S は、プログラミング エラーのために (通常は) 処理できないケースです。S をキャッチするべきではありませんRuntimeException
。単体テストで対象を絞り、製品コードで修正する必要があります。Error
S は、システムの問題 (ファイル システムの障害など) などの重大なエラーのために処理できないケースです。JVM 用のコンパイラなどを構築する場合を除き、 an をスロー、キャッチ、またはサブクラス化しError
ないでください。クラスRuntimeException
とそのサブクラス、およびクラスError
とそのサブクラスは未チェックの例外クラスです。コンパイラは、それらを throws 句で宣言することを強制しません。Throwable
階層の一部である他のすべての例外クラスは、チェック例外です。
チェックされていない例外クラスは、プログラムの多くのポイントで発生する可能性があり、それらからの回復が困難または不可能であるため、java のコンパイル時のチェックから除外されます。また、プログラマーのロジックにも依存します。たとえば、OutOfMemory Exception
JVM がプログラムにこれ以上メモリを割り当てることができない場合にスローされます。