java finally问题@SuppressWarnings("finally")

a34020249 2011-03-22 01:23:18
都说finally是无论程序抛不抛异常都会执行的。我就想把返回值放在finally里如下

boolean isExist(String s) {
boolean flag = false;
Connection conn = ConnectionFactory.getConnection();
String sql = "select * from user where username='" + s + "'";
Statement stmt = ConnectionFactory.getStatement(conn);
ResultSet rs = ConnectionFactory.getResultSet(stmt, sql);
try {
if(rs.next()) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
CloseDB.close(stmt, conn);
return flag;
}
}

但是eclipse会有警告finally block does not complete normally,我改成下面这样就没了。我想问下为什么在finally中返回值就会出现finally block does not complete normally警告。

boolean isExist(String s) {
boolean flag = false;
Connection conn = ConnectionFactory.getConnection();
String sql = "select * from user where username='" + s + "'";
Statement stmt = ConnectionFactory.getStatement(conn);
ResultSet rs = ConnectionFactory.getResultSet(stmt, sql);
try {
if(rs.next()) {
flag = true;
}
return flag;
} catch (SQLException e) {
e.printStackTrace();
return flag;
} finally {
CloseDB.close(stmt, conn);
}
}
...全文
360 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
haojianfeng11 2012-03-06
  • 打赏
  • 举报
回复
怎么打乱的呢,求解,
magong 2011-03-22
  • 打赏
  • 举报
回复
一句话,
finally中如果有return会打乱try/catch/finally正常的处理,所以要避免这样做。
zhujiazhi 2011-03-22
  • 打赏
  • 举报
回复
http://blog.csdn.net/chh_jiang/archive/2009/09/16/4557461.aspx
a34020249 2011-03-22
  • 打赏
  • 举报
回复
来个人帮我解释下啊

81,092

社区成员

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

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