在最终确定最佳实践时关闭连接?

dev*_*per 7 java database-connection finalizer

可能重复:
为什么要实现finalize()?

我看到一些带有以下代码的java文件:

public void finalize() {
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException e) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 被关闭Connectionfinalize方法最好的做法?
  • 是否足以关闭Connection或需要关闭其他对象,如PreparedStatement

Jér*_*dix 8

从Java 7开始,关闭资源的最佳实践是使用try-with-resource:

http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html


小智 5

不,这不是"最佳实践",甚至不是"可行的实践".你不能保证什么时候调用终结器,所以它不起作用.

相反,您应该将资源范围限定为块,如下所示:

try {
  acquire resource
}
finally {
  if (resource was acquired)
    release it
}
Run Code Online (Sandbox Code Playgroud)