日期:2014-05-20  浏览次数:20608 次

关于异常在数据库中的处理
对于下面的代码,会否产生部份对象不能收回???
还有一个我关心的地方,就是如果中途代码有问题,throw了一个异常后, con 对像会否自动 close ?

try {
Connection con = xxx.open();

Statement ....
While(rs.next())
{
...
}
...
close();
}
catch(Exception e)
{
System.out.println("exception :"+e.getMessage());
}

------解决方案--------------------
不会的 throw了一个异常后, 下面的就不会在执行了


等垃圾回收


------解决方案--------------------
try { 
Connection con = xxx.open(); 

Statement st .... 
While(rs.next()) 

... 

... 


catch(Exception e) 

System.out.println("exception :"+e.getMessage()); 
}finally
{
rs.close();
st.close();
con.close(); 
}
这样不管你怎么折腾都会关闭了 给分~~~
------解决方案--------------------
to koj5201314,
你在 finally 里指定 
con.close()是否会有错误呢?
Connection 定义的范围........

其实正确标准的写法会是怎么样 ?
------解决方案--------------------
Connection con = null;
try {
con = xxx.open();

con.setAutoCommit(false);
con.commit();
}
catch(Exception e)
{
try{
con.rollback();
}
catch(Exception ex){
}
System.out.println( "exception : "+e.getMessage());
}

finally{
try{
con.close();
}
catch(Exception ex){
}
}