public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String sourceFileName = reader.readLine();
        try{
            InputStream fileInputStream = getInputStream(sourceFileName);
        } catch (FileNotFoundException e){
            System.out.println("Файл не существует.");
            sourceFileName = reader.readLine();
            InputStream fileInputStream = getInputStream(sourceFileName);
        }
        InputStream fileInputStream = getInputStream(sourceFileName);

        String destinationFileName = reader.readLine();
        OutputStream fileOutputStream = getOutputStream(destinationFileName);

        while (fileInputStream.available() > 0) {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
        }

        fileInputStream.close();
        fileOutputStream.close();
    }

    public static InputStream getInputStream(String fileName) throws IOException {
        return new FileInputStream(fileName);
    }

    public static OutputStream getOutputStream(String fileName) throws IOException {
        return new FileOutputStream(fileName);
    }
}
Этот кусок кода не виден методам и циклу WHILE, каким образом валидатор его пропускает если ничего работать не будет при правильном вводе имени файла с 1й попытки, как и со 2й
try{
            InputStream fileInputStream = getInputStream(sourceFileName);
        } catch (FileNotFoundException e){
            System.out.println("Файл не существует.");
            sourceFileName = reader.readLine();
            InputStream fileInputStream = getInputStream(sourceFileName);
        }