最近在写JDBC工具
在写getConnection方法和close方法的时候,我一头雾水。
/**
* 获取连接
* @return 连接对象
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 释放资源
* @param stmt
* @param conn
*/
public static void close(Statement stmt,Connection conn){
if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if( conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
问题是为什么要处理getConnection方法
DriverManager.getConnection(url, user, password);
抛出一个 SQLException,为什么不 try-catch
释放资源时为什么close使用try-catch而不是throw
关键点分析:
1、抛出异常后,以下代码不会被执行
2、try-catch时,即使catch遇到异常,下面的代码也会继续执行
getConnection的时候不需要使用trycatch,因为如果连数据库都连接不上,后面的操作就不用讲数据库的操作了。
释放资源时需要trycatch,因为关闭的资源不止一个。
本例中,如果抛出了语句异常记录日志的时候不要抛出异常,后续的conn资源无法关闭记录日志的时候不要抛出异常,所以使用try-catch比较合适。
以上均为个人分析。如有错误,请指出,共同进步。