RuntimeException
ではなくException
から例外を取得する必要があるのはいつですか?
RuntimeException
は、メソッドのthrows
句で宣言する必要はありません。これは、good具体的にリストする必要がないため、またはbadメソッドの例外を明示的に宣言することをお勧めします。
考え?
From nchecked Exceptions-The Controversy :
クライアントが例外からの回復を合理的に期待できる場合は、それをチェック済みの例外にします。クライアントが例外から回復するために何もできない場合は、チェックされていない例外にします。
チェックされていない例外は RuntimeException
から派生したものであり、チェックされた例外は Exception
から派生したものであることに注意してください。
クライアントが例外から回復するために何もできないのに、なぜRuntimeException
をスローするのですか?記事の説明:
ランタイム例外は、プログラミングの問題の結果である問題を表します。そのため、APIクライアントコードは、それらから回復したり、何らかの方法でそれらを処理したりすることを合理的に期待することはできません。このような問題には、ゼロ除算などの算術例外が含まれます。 null参照を介してオブジェクトにアクセスしようとするなどのポインタ例外。インデックスが大きすぎたり小さすぎたりすることで配列要素にアクセスしようとするなど、インデックスの例外。
エンタープライズアプリケーション開発には、Exceptionの代わりにRuntimeExceptionを使用するシナリオがたくさんあります。以下は、かなり一般的な2つのシナリオです。
これらはすぐに頭に浮かぶ2つの重要なシナリオですが、もちろん他のシナリオもあります。