黑马程序员技术交流社区
标题:
关于关闭数据库的流那个更好点~?有什么区别?
[打印本页]
作者:
CrazyProgram
时间:
2013-4-9 22:47
标题:
关于关闭数据库的流那个更好点~?有什么区别?
本帖最后由 CrazyProgram 于 2013-4-10 22:46 编辑
第一种方式:
public static void free(ResultSet rs,Statement st,Connection conn){
try{
if(rs!=null){
rs.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(st!=null){
st.close();
}
}catch(SQLException e){
e.printStackTrace();
}finally{
try{
if(conn!=null){
conn.close();
//myDataSource.free(conn);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}
复制代码
第二种方式:
public static void close(ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void close(Statement stmt){
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void close(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制代码
作者:
胡国彬
时间:
2013-4-10 20:24
一般开发中,最多使用的是第一种
这种方式有一个优势,就是,即便前面的rs或者st关闭的时候出现了异常,后面的conn仍然能够正常关闭,因为java的异常处理机制是,finally语句块中的代码,不管有没有异常,最终都会执行的.
而第二种方式的话,如果有一个发生异常,剩下的就不能正常关闭,这就是区别.
作者:
CrazyProgram
时间:
2013-4-10 22:46
胡国彬 发表于 2013-4-10 20:24
一般开发中,最多使用的是第一种
这种方式有一个优势,就是,即便前面的rs或者st关闭的时候出现了异常,后面的c ...
噢,那就是用第一种就可以了,第二种知道就可以了·~!谢了·
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2