這是一個問題,而不是問題。規則「資源應該關閉」如何檢查連接已關閉?
我有一個名爲DSConnectionUtilExternal的類,它有一個方法來檢索數據庫連接和一個方法來關閉它。這個類是在一個jar文件中。
另一方面,我有一個項目,包括jar文件作爲依賴項。 在這個proyect我有這樣的代碼
Connection con = null;
ResultSet rsGet = null;
PreparedStatement psGet = null;
try {
con = DSConnectionUtilExternal.openConnection();
psGet = con.prepareStatement("SELECT * FROM TEST");
rsGet = psGet.executeQuery();
int counter = 0;
while (rsGet.next()) {
counter++;
System.err.println(counter);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rsGet != null) {
rsGet.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
rsGet = null;
try {
if (psGet != null) {
psGet.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
psGet = null;
DSConnectionUtilExternal.closeConnection(con);
}
如果我刪除的方法closeConnection的jar文件的內容,聲納沒有檢測到連接未關閉。我認爲這很正常,聲納不會反編譯jar文件來訪問jar文件代碼。
所以問題是? 「資源應該關閉」規則使用什麼標準來確定連接是否在finally子句中關閉?
感謝
您是否有充分的理由不使用試用資源? –
使用的標準是引用類型是否實現(Auto)Closeable接口:您必須顯式地關閉它,或者使用try-with-resources。 –
如果你關心拼寫檢查你的問題,那麼你會更加重視你。 –