在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