「うまくいかない可能性のあるものと、うまくいかない可能性のあるものとの主な違いは、うまくいかない可能性があるものがうまくいかない場合、通常、それを修正したり修正したりすることが不可能であることが判明することです。」-ダグラス・アダムス
クラス FileItems があります。FileItems コンストラクターはファイルを受け取り、ファイルが存在しない場合は例外 (FileNotFoundException) をスローします。そのクラスの他のメソッドにもファイル操作が含まれるため、FileNotFoundException をスローする機能があります。より良い解決策を見つけたいと思います。他のプログラマーがこれらの非常にありそうもない FileNotFoundExceptions をすべて処理する必要がないソリューション。
問題の事実:
- ファイルが存在することが確認されましたが、このメソッドが呼び出される前にファイルが削除される可能性はほとんどありません。
- 1 が発生する確率は非常に異なり、回復できないため、未チェックの例外を定義することをお勧めします。
- ファイルはすでに存在することがわかっているため、他のプログラマーがコードを記述してチェック済みの FileNotFoundException をキャッチすることを強制するのは、面倒で役に立たないようです。プログラムはその時点で完全に失敗するはずです。たとえば、コンピューターが発火する可能性は常にありますが、他のプログラマーにそれをチェック例外として処理させるほど正気でない人はいません。
- 私は時々この種の例外の問題に遭遇し、この問題が発生するたびにカスタムのチェックされていない例外を定義すること (私の古い解決策) は面倒で、コードが肥大化します。
コードは現在このようになっています
public Iterator getFileItemsIterator() {
try{
Scanner sc = new Scanner(this.fileWhichIsKnowToExist);
return new specialFileItemsIterator(sc);
} catch (FileNotFoundException e){ //can never happen}
return null;
}
カスタムのチェックされていない FileNotFoundException を定義せずに、どうすればこれを改善できますか? checkedException を uncheckException にキャストする方法はありますか?