JDBC literatur では、次のようなスニペットによく遭遇します。
void databaseCall() {
Connection con = null;
Statement statement = null
try {
con = getConnection(...);
statement = con.createStatement(...);
// do some query
} catch (SQLException e) {
// bla bla
} finally {
try {con.close();} catch (Exception e1) {}
try {statement.close();} catch (Exception e1) {}
}
}
接続とステートメントを明示的に閉じるのがベスト プラクティスであることはわかっていますが、この場合、メソッドが終了したとき、つまりブロックが終了したときcon
に明らかにリソースが閉じられます。ブロック内のステートメントは本当に必要ですか? リソースを明示的に解放しなかったとしても、メソッドが終了したときに何らかの方法でリソースが閉じられるのではないでしょうか?statement
try
close
finally