带有返回语句的奇怪警告

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块中,则错误会出现“返回语句在最后一个大括号之前丢失”


莫回无
浏览 115回答 4
4回答

慕桂英4014372

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

ibeautiful

如果查询抛出 一个 ,则该变量从未被赋值。在这种情况下,它应该有什么价值?SQLExceptionresult我建议你声明抛出 ,并让它继续,直到你到达一个特定于 UI 的方法,就像一个 set on 作为按钮上的侦听器。getParticularEmployee()SQLExceptionAction保持低级实现不受高级用户界面代码的影响,可以以更多方式重用它。今天,您正在创建一个用于员工管理的桌面应用程序。明天,假设您希望通过 Web 服务提供其某些功能。将逻辑与表示层分离将允许您构建新的前端,但重用后端上的所有逻辑。您还遇到了资源问题。应该关闭,但是当您的方法返回时,您将失去对它的跟踪。此外,在完成使用之前,无法关闭它。PreparedStatementResultSet

烙印99

您必须初始化程序的所有分支。您的变量可能会在没有您照顾的情况下为空。放入您的捕获块。result = null;如果您的变量是有效的最终变量或最终变量,则最好进行实践。检查这个:https://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.4

慕的地10843

因此,您需要问问自己,如果在块的开头引发异常会发生什么。如果确实发生这种情况,则不会为其分配值,因此您会收到该警告。try{}result您需要分配“默认值”值,或者(重新)引发适当的异常。由于您返回的是 ,因此您可以改用此方法处理结果,这可能会为您提供返回 null(或者可能是空的可选)雇员的替代方法。ResultSet
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java