我看到了一些带有以下代码的java文件:
public void finalize() {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
}
}
}
Connection
方法最佳做法中关闭finalize
?Connection
或是否需要关闭其他对象,例如PreparedStatement
?答案 0 :(得分:8)
从Java 7开始,关闭资源的最佳做法是使用try-with-resource:
http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
答案 1 :(得分:5)
不,这不是"最佳实践",甚至"可通行的练习"。 你不能保证什么时候调用终结器,所以它不会起作用。
相反,您应该将资源限定为块,如下所示:
try {
acquire resource
}
finally {
if (resource was acquired)
release it
}
答案 2 :(得分:1)
不,如果有的话,终结者不太可能及时被召唤。明确而且肯定地清理你的资源。
/* Acquire resource. */
try {
/* Use resource. */
}
finally {
/* Release resource. */
}
答案 3 :(得分:-2)
获取Connection对象后,使用它来执行放置在try块中的PreparedStatement / Statement / CallableStatement,然后放置房屋清洁工作,如关闭法令和conn。
例如:
try{
Connection conn = DriverManager.getConnection(url,username,password);
PreparedStatement pStat = conn.prepareStatement("Drop table info");
pStat.executeUpdate();
}
catch(Exception ex){
}
finally(){
pStat.close();
conn.close();
}