これは質問ですが問題ありません。"リソースを閉じてください"というルールはどのようにして接続が閉じられていることを確認しますか?
DSConnectionUtilExternalというクラスがありますが、データベース接続を取得するメソッドとそのメソッドを閉じるメソッドがあります。このクラスはjarファイルにあります。
一方私は依存関係としてjarファイルを含むプロジェクトを持っています。私はjarファイルでメソッドcloseConnectionの内容を削除した場合 はこのの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);
}
を持って、ソナーは、接続が閉じていないことを検出しません。私はそれが正常だと思う、ソナーはjarファイルのコードにアクセスするためにjarファイルを逆コンパイルしません。
質問は?最終節で接続が閉じられているかどうかを判断するために、「リソースは閉じているべきですか?」ルールで使用される基準は何ですか?あなたの質問から
おかげ
リソースを試してみることをお勧めしない理由はありますか? –
基準は、参照型が(自動)Closeableインタフェースを実装するかどうかです:明示的に 'close()'するか、try-with-resourcesを使用する必要があります。 –
あなたの質問をスペルチェックするのが気になるならば、もっと真剣に受け止めるより高い可能性があります。 –