我应该在try-with-resources语句中初始化Statement和ResultSet,还是只在try块中初始化并在finally块中关闭Statement和ResultSet。
我需要了解根据最佳实践实施此方法的最佳方法
试用资源声明
try(Connection connection = DriverManager.getConnection("url");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("query")){
} catch (SQLException e) {
e.printStackTrace();
}
或尝试抓住最后
Statement st = null;
ResultSet rs = null;
try(Connection connection = DriverManager.getConnection("url"))
{
st = connection.createStatement();
rs = st.executeQuery("query");
} catch (SQLException e) {
e.printStackTrace();
}
finally {
try {
rs.close();
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
我相信大多数时候代码更少的代码就是更干净。其次,如果你和团队合作,你的团队成员无法正确阅读你的代码,那么可读性就很重要。/它绝对是你的错。
在第一种情况下,对于使用Java7
的程序员而言,它看起来非常简单易懂,并且删除了关闭资源的样板代码。在第二种情况下,首先用null
进行初始化,最后阻止了try-close-catch
session。总是更好的方法是使用第一个清洁代码并再注意一件事,
在try-with-resources语句中,运行任何catch或finally块 在声明的资源关闭后。
try-with-resource
的问题是你不能使用超出范围的资源尝试它将被限制在try
块,而你的第二部分则不是这样。