Eclipse(Juno)发出以下警告:
static void saveDetails(byte[] detailsData) {
OutputStream os = null;
try {
os = sContext.openFileOutput(DETAILS_FILE_NAME, Context.MODE_PRIVATE);
os.write(detailsData);
} catch (IOException e) {
Log.w(LOG_TAG, "Unable to save details", e);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException ignored) {
}
}
}
}
在我看来,这是一个假阳性。您的资源被关闭在一个“finally”块中,所以我看不出这里会出什么问题。
顺便说一句,如果您正在使用Java7,我建议您使用“使用资源尝试”的习惯用法。
static void saveDetails(byte[] detailsData) {
try (OutputStream os = sContext.openFileOutput(DETAILS_FILE_NAME, Context.MODE_PRIVATE);) {
os = sContext.openFileOutput(DETAILS_FILE_NAME, Context.MODE_PRIVATE);
os.write(detailsData);
} catch (IOException e) {
Log.w(LOG_TAG, "Unable to save details", e);
}
}
我有一个连接到MySQL的服务方法,可以在中获取数据,最后在
eclipse“潜在资源泄漏”警告不正确。 没有警告: 警告:潜在资源泄漏:“此位置可能未关闭响应” 为什么第二种方法会引起警告? 谢谢!
我是个新手。我已经编写了这段代码,它显示那里存在资源泄漏 这是什么意思?抱歉,我太天真了。
在中,我收到了一个警告,我不明白这一点。 这是理解问题还是java/eclipse问题?
我在IOUtils上使用了一个很好的函数,名为“closequity”,它可以关闭流,不管流中有什么。 例如: 不知何故,当我在最后一个块中调用它时,它也隐藏了Eclipse上的警告,即“资源泄漏:‘输入’在此位置未关闭”。 这意味着在上述代码中,没有此类警告。 我不明白它是如何隐藏对自身“外部世界”的警告的。 我试图通过复制这个库的代码来检查它(这里的例子),但是当我在新类上使用它时,警告会出现
在哪种情况下会发生这种情况?