关于try/catch用法的疑惑!等高手!!(88分)

liyanmingkong 2006-04-14 04:17:37
我写了方法如下:它的返回类型是GX_PH_Measure 但是我把其中的else {
throw new SQLException (
"error.removed.Test");
}
这句去掉 就会提示这个方法需要一个 GX_PH_Measure类型的返回值!不知道为什么!抛出的这个异常和整个try/catch有什么关系呢!谢谢!
public GX_PH_Measure findSQL_formain(String sql,int ipage,HttpServletRequest request)
{
PreparedStatement ps = null;
ResultSet rs = null;
GX_PH_Measure m_Test=new GX_PH_Measure();
try {
if (con.isClosed()) {
throw new IllegalStateException("error.unexpected");
}
con.setAutoCommit(true);
ps = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = ps.executeQuery();
if (rs.next()) {
m_Test= new GX_PH_Measure();
m_Test.setModel_number(rs.getString(2));
return m_Test;
}else {
throw new SQLException (
"error.removed.Test");
}
//</find>
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
} finally {
try {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("error.unexpected");
}
}

}
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
idilent 2006-04-18
  • 打赏
  • 举报
回复
因为throw一个exception,就会认为这个方法没有正常执行所以虽然你开始的时候没有在else里面返回结果,编译也是成功的。
miaoguangye 2006-04-18
  • 打赏
  • 举报
回复
这个问题的答案如上面所说,你的方法有返回值,如果在主干中有即使用return null也不会报错,否则所有分支都得返回
cate520 2006-04-14
  • 打赏
  • 举报
回复
if (rs.next()) {
m_Test= new GX_PH_Measure();
m_Test.setModel_number(rs.getString(2));
return m_Test;
}
return null;//这样都可以的,方法体不能没有返回值,if里面的返回是一个可能性的,
加上
else{

}的话,那就是必然了,如果,否则,
呵呵,加油。。。。
Marcus-Z 2006-04-14
  • 打赏
  • 举报
回复
因为你的方法要你总是返回类型的,你把else删掉,假如要是执行else分支,不就不返回那个类型了吗
qiang029 2006-04-14
  • 打赏
  • 举报
回复
if (rs.next()) {
m_Test= new GX_PH_Measure();
m_Test.setModel_number(rs.getString(2));
return m_Test;
}else {
throw new SQLException (//你把这两句删了,万一运行ELSE里面,一你没有反回值,又没有扔出异常。所以编辑器会提示你错误
"error.removed.Test");//
}
smartcomplier 2006-04-14
  • 打赏
  • 举报
回复
因为编译器知道一个分支不能正常结束.
imA 2006-04-14
  • 打赏
  • 举报
回复
因为你的方法是要返回类型的,像你说的把else删掉,当然会提示你要返回一个值了,因为if else是程序的分支,有可能执行if分支,也有可能执行else分支。
yeyu710 2006-04-14
  • 打赏
  • 举报
回复
因为你的try里面可能会没语句!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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