我正在使用启用了资源泄漏警告的 Eclipse 4.2。
在我看来,此代码会产生错误的资源泄漏警告。
public static void test(){
InputStream in = null;
try {
in = new FileInputStream("A");
} catch (IOException e) {
return;
}finally{
close(in);
}
}
public static void close(Closeable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果我重构代码,并将 close 方法拉到 finally 块中,一切都很好。
public static void test2(){
InputStream in = null;
try {
in = new FileInputStream("A");
} catch (IOException e) {
return;
}finally{
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace()
}
}
}
}
我可以以某种方式删除这些警告而不必复制close
方法的代码并且不必禁用资源泄漏警告吗?
我在这里找到了一个错误报告,说明循环中发生了类似的事情,但我的代码中不存在循环。