Could anyone explain me why in the last lines, br is not recognized as variable? I've even tried putting br in the try clause, setting it as final, etc. Does this have anything to do with Java not support closures? I am 99% confident similar code would work in C#.
private void loadCommands(String fileName) {
try {
final 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();
} finally {
if (br != null) br.close(); //<-- This gives error. It doesn't
// know the br variable.
}
}
Thanks
usingkeyword that, like a for loop, allows you to define a variable limited by the subsequent scope. Java does not have that.e.printStackTrace()here. Your program would continue to run with possibly an empty action list. You don't want to have that. Just throw through and let your application exit or stall with a clear error message so that the enduser can take action accordingly.