Я пишу фрагмент кода, который возвращает сканер для имени файла, введенного пользователем. Вот код:
public static Scanner getInputScanner(Scanner console) {
System.out.print("Enter input file: ");
String fileName = "";
try {
fileName = console.nextLine();
File f = new File(fileName);
} catch (FileNotFoundException e) {
while (!(new File(fileName)).exists()) {
System.out.println(fileName + " (No such file or directory)");
System.out.print("Enter input file: ");
fileName = console.nextLine();
}
}
File f = new File(fileName);
return new Scanner(f);
}
Я получаю две ошибки:
Compression.java:49: error: exception FileNotFoundException is never thrown in body of corresponding try statement
} catch (FileNotFoundException e) {
^
Compression.java:57: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
return new Scanner(f);
Я не могу понять, почему блок try не генерирует исключение, поскольку пользователь может ввести недопустимое имя файла.
Спасибо за любую помощь.
EDIT: изменил FileNotFoundException на NullPointerException, и это устранило первую проблему. Теперь, однако, я получаю сообщение об ошибке, что мой оператор return создает незарегистрированное исключение FileNotFoundException. Но этот код не будет выполняться, если файл недействителен, верно? Является ли Java слепой к этому и требует, чтобы я все равно поймал исключение?