私は、コマンドラインから渡されたファイルを開いて読み込もうとしています。system.err.printlnと例外をスローするだけの違いはありますか? (java)
これは私がこれまで持っているものです。
import java.io.*;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
if ((args[0].length() == 0) || (args[0] == null) || (args[0].isEmpty())) {
System.err.println("Usage Error: No file name was provided.");
System.exit(1);
}
File file = new File(args[0]);
if (!file.exists()) {
System.err.println("Usage Error: The file, " + args[0] + ", does not exist.");
}
if (!file.canRead()) {
System.err.println("Usage Error: The file, " + args[0] + ", cannot be read.");
}
} // main
}
は、私は、ファイルが見つからない例外を処理する方法を完全に確認していません。私の先生はtry/catchブロックについて言及しましたが、ここにそれらが必要かどうかはわかりませんでした。ファイルが引数として渡されたかどうかを確認し、System.err.print()メソッドを使用してユーザーにエラーを通知していないかどうかを確認するだけで十分ですか?
また、System.err.print()が呼び出された場合は、その後にプログラムが終了します(つまり、その後にSystem.exit(1)を含める必要がありますか)。それとも、それはより良い(デザインの面で)ちょうどこのような何かをすることです:
public void readFile() throws FileNotFoundException {
// try to open file here
}
public static void main(String[] args) {
try {
readFile();
} catch (Exception e) {
// exception handled here
}
}
は、私はちょうど、ユーザーが実際にはファイル名などの文字列を渡し、それが/を読み取ることができますが存在することを確認する必要があります。
違いは同じではないという点です。 Oneは出力をコンソールに出力します。もう1つはプログラムフローを変更します。これはすべて文書化されています。推測する必要はありません。 – EJP