为了账号安全,请及时绑定邮箱和手机立即绑定

带有返回语句的奇怪警告

带有返回语句的奇怪警告

莫回无 2022-08-03 16:27:03
public ResultSet getParticularEmpoyee(int empId){        PreparedStatement  getParticular;        ResultSet result;        try{             getParticular= conn.prepareStatement("SELECT * FROM "+DatabaseHelper.TABLE_NAME+" WHERE EMP_ID = ? ");             getParticular.setInt(1,empId);             result = getParticular.executeQuery();            // return result;        }catch(SQLException e){             JOptionPane.showMessageDialog(null, e);          }        return result; // this gives the warning that result may not be initialized :)    }以上是我出于某种目的的代码,我遇到了问题,我不明白为什么会发生:)这个警告会不会有一些严重的后果,因为它只是一个警告?如果这是一个问题,那么请告诉我避免这种情况的方法!如果我将返回语句放在try块中,则错误会出现“返回语句在最后一个大括号之前丢失”
查看完整描述

4 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您的 ResultSet 未初始化,因此,如果 try catch 中存在异常,则可以将其取消定义。初始化为 null 更正确、更清晰。


查看完整回答
反对 回复 2022-08-03
?
ibeautiful

TA贡献1993条经验 获得超5个赞

如果查询抛出 一个 ,则该变量从未被赋值。在这种情况下,它应该有什么价值?SQLExceptionresult

我建议你声明抛出 ,并让它继续,直到你到达一个特定于 UI 的方法,就像一个 set on 作为按钮上的侦听器。getParticularEmployee()SQLExceptionAction

保持低级实现不受高级用户界面代码的影响,可以以更多方式重用它。今天,您正在创建一个用于员工管理的桌面应用程序。明天,假设您希望通过 Web 服务提供其某些功能。将逻辑与表示层分离将允许您构建新的前端,但重用后端上的所有逻辑。

您还遇到了资源问题。应该关闭,但是当您的方法返回时,您将失去对它的跟踪。此外,在完成使用之前,无法关闭它。PreparedStatementResultSet


查看完整回答
反对 回复 2022-08-03
?
烙印99

TA贡献1829条经验 获得超13个赞

您必须初始化程序的所有分支。您的变量可能会在没有您照顾的情况下为空。

放入您的捕获块。result = null;

如果您的变量是有效的最终变量或最终变量,则最好进行实践。检查这个:https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.4


查看完整回答
反对 回复 2022-08-03
?
慕的地10843

TA贡献1785条经验 获得超8个赞

因此,您需要问问自己,如果在块的开头引发异常会发生什么。如果确实发生这种情况,则不会为其分配值,因此您会收到该警告。try{}result

您需要分配“默认值”值,或者(重新)引发适当的异常。

由于您返回的是 ,因此您可以改用此方法处理结果,这可能会为您提供返回 null(或者可能是空的可选)雇员的替代方法。ResultSet


查看完整回答
反对 回复 2022-08-03
  • 4 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号