チェック例外は、発生してはならない予期しない動作 (0 による除算など) ではなく、発生する可能性があり、プログラマーがそれらを管理する必要がある状況を表す状況でスローされることを意図しています。
これは非常にうまく機能する Java 言語と Java API の設計です。これは、処理すべき特別な状況につながる可能性のある機能を提供する API を使用するときに、何を気にする必要があるかを常に知っているためです。
チェックされた例外について忘れるポイントはわかりません。もちろん、例外を発生させる可能性のあるすべてをカプセル化して、何が起こっているかを内部的に管理し、チェックされていない(カスタム)例外をスローするだけで済みますが、これらの問題を気にする必要がありますとりあえず。
私が見ることができる唯一の安全なアプローチは次のようなものです:
class UncheckedFileNotFoundException extends RuntimeException {
..
}
class Foobar {
public static void method(String path) {
try {
FileReader reader = new FileReader(path);
}
catch (FileNotFoundException e) {
// code;
throw new UncheckedFileNotFoundException();
}
}
}
しかし、これでは問題は解決しません。ファイルが見つからない場合、呼び出し元はそれに応じて何かを行い、例外を無視するか、メソッドが例外をスローする可能性があるという事実を隠す必要があります (商品がないため)throws FileNotFoundException
メソッド署名で)何も改善しません。