try{
conn=ds.getConnection();
stmt=conn.createstatement();
rs=stmt.executeQuery("");
......
rs.close();//-----------------1
rs=null;
stmt.close();
stmt=null;
conn.close();
conn=null;//------------------1
}
catch(Exception e){
....}
finally{//--------------------2
if(rs!=null){
try{
rs.close();}
catch(Exception e){...}
rs=null;
}
if(stmt!=null){
try{
stmt.close();}
catch(Exception e){...}
stmt=null;
}
if(conn!=null){
try{
conn.close();}
catch(Exception e){...}
conn=null;
}---------------------------2
}
困惑:
我怎么觉得1处的三个close是多余的,反正finally总是执行的,为什么不单留下finally里的处理。
在1处处理一下的目的是神马?
线程安全
------解决方案--------------------
太多鱼了吧。。没必要的
------解决方案--------------------
貌似try中的close是多余的
------解决方案--------------------
说明你看的那书也不咋地。。。
------解决方案--------------------
如果finally反正都要执行的话,try里头的close完全可以不用啊
------解决方案--------------------
同意,确实多余
------解决方案--------------------
还在入门阶段,加油吧
------解决方案--------------------
没,我是说整个
rs.close();//-----------------1
rs=null;
stmt.close();
stmt=null;
conn.close();
conn=null;//------------------1
部分是多余的
因为与finally中重复了
但如果说用=null代替close方法,还要研究一下,close方法关闭的资源可能不止它自身对象