看传智播客李勇jdbc的一个困惑

danliandejintou 2010-11-09 09:41:47
里面在关闭数据库连接的时候,有这样一段代码

try{
}catch(){
}finally{
try{
}catch(){
}finally{
try{
}catch(){
}finally{

}
}

}

感觉很怪
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
coooliang 2010-11-09
  • 打赏
  • 举报
回复

finally {
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

}



你这样写就不困惑了吧!
computerclass 2010-11-09
  • 打赏
  • 举报
回复
同意三楼!
txzsp 2010-11-09
  • 打赏
  • 举报
回复
很正常,就是在每个对象关闭前保证没有出现异常而已。
ETCentury 2010-11-09
  • 打赏
  • 举报
回复
很符合逻辑!
凉岑玉 2010-11-09
  • 打赏
  • 举报
回复
这是因为finally里面要关闭链接的操作也需要捕获异常··所以才会有finally里面再嵌套try {} catch()
龙四 2010-11-09
  • 打赏
  • 举报
回复
写错了,是在finally里
龙四 2010-11-09
  • 打赏
  • 举报
回复
这有什么奇怪的?这个逻辑很正常

try {
if(rs!=null) {
rs.close();
}
} catch (Exception e) {
try {
if(stmt != null) {
stmt.close();
}
} catch (Exception e) {
if(conn != null) conn.close();
}
}




你试想rs和stmt都抛出异常了呢?!上面的代码可以继续关闭connection,把好最后一道关
caofaping 2010-11-09
  • 打赏
  • 举报
回复
他的意思可能是不管是否正常关闭都去关闭下一个流!
huguang 2010-11-09
  • 打赏
  • 举报
回复
一般怪吧,呵呵

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧