У меня есть следующий код:
try {
reader = new BufferedReader(new FileReader(file));
String records = "";
System.out.println("EMITTER QUEUE BACKUP: restoring from file...");
try {
while(reader.ready()) {
records += reader.readLine();
}
} catch (IOException e) {
System.out.println("EMITTER QUEUE BACKUP: error restoring");
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
doSomethingWith(records);
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Переменная records
в строке doSomethingWith(records);
вызывает ошибку как неопределенную.Это нормально, я могу понять, что его определение в первом блоке try
иногда может не происходить.Но есть вопрос: если я удаляю строку doSomethingWith(records);
, то переменная records
в первом блоке try
помечается как неиспользуемая !!!Так почему же он распознает его как используемый в этой строке, даже если он вызывает явную ошибку, потому что предполагается, что это не та же самая переменная, и, следовательно, он не может стоять за случай использования String records = ""
?
Если это имеет значение, моя IDE - Eclipse.