Если я задаю переменную fileInputStream перед блоком try, а затем пытаюсь присвоить ей значение (как и сделано в задаче) - то все ок, даже валидатор доволен. Если же я объявляю переменную внутри:
try {
    InputStream fileInputStream = getInputStream(sourceFileName);
}
catch(FileNotFoundException e)
{
    System.out.println("Файл не существует.");
    sourceFileName = reader.readLine();
    InputStream fileInputStream = getInputStream(sourceFileName);
}
, то дальше компилятор ругается на то, что "не знаю никакой переменной fileInputStream". Просто логику интересно понять - почему? Переменную в try...catch в принципе нельзя задавать?