Я пытаюсь открыть и прочитать файл, переданный из командной строки.разница между 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
}
}
Мне просто нужно, чтобы убедиться, что пользователь фактически передает строку в качестве имени файла и что она существует/может быть прочитан.
Разница в том, что они не совпадают. Один выводит вывод на консоль. Другой изменяет поток программы. Все это документировано. Нет необходимости гадать. – EJP