Чтобы обновить этот ответ после выпуска Java 7 & 8:
Во-первых, если вы объявите переменную внутри традиционного блока try {}, у вас не будет доступа к этой переменной за пределами этого блока try.
Теперь, начиная с Java 7, вы можете создать Try-With-Resources , который может сократить объем написанного вами кода, устранит проблему с областью действия и автоматически закроет вам ресурсы !!! Хет-трик в этой ситуации;)
Эквивалентный код с Try-With-Resources :
private void loadCommands(String fileName) {
try (BufferedReader br = new BufferedReader(new FileReader(fileName))){
while (br.ready()) {
actionList.add(CommandFactory.GetCommandFromText(this, br.readLine()));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Обратите внимание, что теперь вам даже не нужно беспокоиться о области видимости переменной, поскольку нет необходимости вызывать .close (), это делается автоматически за вас!
Любой класс, который реализует интерфейс AutoClosable, может использоваться в блоке Try-With-Resources. В качестве быстрого примера я оставлю это здесь:
public class Test implements AutoCloseable {
public static void main(String[] args) {
try (Test t = new Test()) {
throw new RuntimeException();
} catch (RuntimeException e) {
System.out.println(e);
} catch (Exception e) {
System.out.println(e);
}
System.out.println("The exception was caught and the program continues! :)");
}
@Override
public void close() throws Exception {
// TODO Auto-generated method stub
}
}
Если вам нужно больше пояснений по использованию try-with-resources, нажмите здесь