【发布时间】:2016-08-16 21:26:37
【问题描述】:
在 JDK 6 及更低版本中,我看到许多带有 try - finally 块的代码 sn-ps,如下所示。
private void doSomething() throws IOException {
FileReader reader = null;
try {
reader = new FileReader("someFile");
.....
} finally {
if(reader != null){
reader.close();
}
}
}
为什么要将 reader 初始化为 null,然后在 try 块中分配它。下面的模板会更好(想知道我是否遗漏了什么)?我的理由...我们避免 null check in finally 块,如果阅读器未能初始化,那么我不必做任何其他事情。
private void doSomething() throws IOException {
FileReader reader = new FileReader("someFile");
try {
.....
} finally {
reader.close();
}
}
【问题讨论】:
-
不是真的!如果构造函数抛出异常,该方法的其余部分无论如何都无事可做。看到 throws 子句了吗?
标签: try-finally