在Eclipse
我收到警告Resource leak: 'ps' is not closed at this location
,我不明白。eclipse中的资源泄漏警告
在我的Java
代码中,我声明“ps”作为预备声明,我多次使用(并关闭)它。然后,我有以下顺序:
try {
if(condition) {
ps = c.prepareStatement("UPDATE 1 ...");
} else {
ps = c.prepareStatement("UPDATE 2 ...");
}
ps.executeUpdate();
} catch (SQLException e) {
// exception handling
} finally {
if (null != ps)
try {
ps.close();
} catch (SQLException e) {
// exception handling
};
}
“资源泄漏” - 警告出现在“更新” - 其他部分中的语句。 如果我在启动try块之前设置了ps = null
,则没有警告。
如果第二个UPDATE语句被注释掉,则不会显示警告。
这是理解还是java/eclipse问题?
我的猜测是Eclipse正在检测到您之前使用了预准备语句对象,并且由于潜在的SQLException可能无法正确关闭它。如果你在finally块中执行'ps = null;'它可能会被修复,这将是一个更合理的清理它的地方。 – 2013-02-13 20:58:02