gpt4 book ai didi

Java 1.6 java.sql try/catch/finally 疯狂编码

转载 作者:行者123 更新时间:2023-11-29 08:08:43 24 4
gpt4 key购买 nike

我目前正在创建许多将使用连接池访问数据库的类。所以我得到一个连接,创建一个语句并得到结果集。 (我不能使用 Java 1.7 和奇妙的自动资源管理)完成我的方法时,我必须以 finally block 结束:

        if (rs != null) {
try {
rs.close();
} catch (SQLException sqle) {
logger.error("Couldn't close result set", sqle);
}
}
if (st != null) {
try {
st.close();
} catch (SQLException sqle) {
logger.error("Couldn't close statement", sqle);
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException sqle) {
logger.error("Couldn't close connection", sqle);
}
}

我已经看到 XX 个类每个有 4/5 个方法将是一场噩梦。

创建一个帮助器类是否是一个好习惯,它会为每个对象类型提供一个特殊的关闭方法,例如:

public static void closeResource(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException sqle) {
logger.error("Couldn't close connection", sqle);
}
}

然后用 xx.close(connection);xx.close(statement);xx.close(rs);

做我通常的 finally

或者以同样的想法(我知道在这一点上我会震惊一些人,因为我自己发现这有点尴尬),有一个像 public static void closeResources(Object... obj) {} 有一个糟糕的 instanceof 列表?

或者根据您的经验,在任何地方对整个事情进行编码更好?

最佳答案

使用 Apache 公共(public)项目:http://commons.apache.org/dbutils/apidocs/org/apache/commons/dbutils/DbUtils.html

DbUtils.closeQuietly() 可能是您所需要的

关于Java 1.6 java.sql try/catch/finally 疯狂编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com