Напоминаю краткую суть теска. Считать с консоли имя файла, создать стрим с этим файлом, если файл не существует выдать в терминал "Файл не существует." и открыть ещё раз консоль для повторного ввода. Ввел следующий код:
String sourceFileName;
InputStream fileInputStream = null;
do {                                        // Открываю цикл do-while
    try {                                   // Открываю блок в котором нужно отслеживать исключение
        sourceFileName = reader.readLine(); // Считываю название файла с консоли
        fileInputStream = getInputStream(sourceFileName);  // Открываю стрим с файлом
    } catch (FileNotFoundException e) {     // Так как такого файла нет, ловлю исключение
        sourceFileName = null;              // Обнуляю переменую sourceFileName
        System.err.println("Файл не существует.");   // Вывожу в термила фразу, что файла не существует
    }
}while(sourceFileName == null);             // Так как переменную обнулил в блоке обработке исключений, начинаю цикл заново
Когда я в ввожу в терминал например "er", "rt", "ty", "ап", "пр, "ро", всё работает корректно, но когда ввожу "df", "ап" исключение не генерируется и соответственно не попадаю в блок catch. Вопрос почему так?