うーん、これは私が探しているアプローチではないと思います。現在、例外はスローされません。しかし、これらの状況でコードが失敗することはわかっているので、それらの状況に適切に対処できるように、コードに例外を追加する方法を知りたいです。
例外はスローしません。listFiles()
ドキュメントでは、次のように述べています。
この抽象パス名がディレクトリを示さない場合、または I/O エラーが発生した場合は null を返します。
したがって、ファイルまたは存在しないファイルの場合は、null が返されます。
しかし、ここで RuntimeException の出番です。あなたが書いたメソッドで言うと:
public void doStuffToAnExistingDirectory(String dirname)
{
// stuff
}
そして、メソッドは、既存の directory のディレクトリ名を期待するように記述されており、そのメソッドのどこかでこれを行います。
File file = new File(dirname);
File[] listFiles = file.listFiles();
int num = listFiles.length;
これは、既存のディレクトリを示さないNullPointerException
場合にスローします。dirname
この例外はRuntimeであるため、メソッドでキャッチしたり宣言したりする必要はなく、doStuffToAnExistingDirectory()
最終的に何かがキャッチするまで伝搬させることができます。これは基本的に、ディレクトリが存在しない例外を処理するようにメソッドが作成されていないことを示しています。したがって、このプログラムの実行中に、dirname
何らかの形で存在しないディレクトリになると、ランタイム例外がスローされます。
コードでこのケースを処理することを選択できます (実行時ではなく、プログラムの実行中) listFiles
。null かどうかを確認してから、独自の例外をスローして、呼び出しているものを許可します。メソッドは、doStuffToAnExistingDirectory()
存在しないディレクトリを提供したことを認識しています。