我正在使用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
方法的代码,而无需禁用资源泄漏警告?
我发现了一个错误报告here,其中包含类似于循环的内容,但我的代码中没有循环。
答案 0 :(得分:3)
有关资源泄漏分析的更多详细信息,请访问此处 - http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-avoiding_resource_leaks.htm&cp=1_3_9_1
编辑:关于'资源泄漏'与'潜在资源泄漏'的说法
理想情况下,我们希望编译器能够为我们提供完整且正确的问题集,但实现这一目标存在局限性: - )
答案 1 :(得分:1)
好消息:Eclipse 4.3将识别Google& Apache关闭实用程序!
http://download.eclipse.org/eclipse/downloads/drops4/S-4.3M4-201212140730/news/
(搜索“泄漏分析”)