Java 带有return语句的奇怪警告

Java 带有return语句的奇怪警告,java,Java,以上是出于某种目的而编写的代码,我遇到了问题,我不明白为什么会发生这种情况:) 这个警告仅仅是一个警告,会不会产生一些严重的后果? 如果这是一个问题,那么请告诉我如何避免! 如果我将return语句放在try块中,那么错误就会出现“return语句在最后一个大括号之前丢失”所以您需要问问自己,如果在try{}块的开头抛出异常会发生什么情况。如果发生这种情况,则不会为result赋值,因此您会收到该警告 您需要指定一个“默认”值,或者(重新)抛出一个适当的异常 由于您返回的是一个结果集,因此您可以

以上是出于某种目的而编写的代码,我遇到了问题,我不明白为什么会发生这种情况:)
这个警告仅仅是一个警告,会不会产生一些严重的后果? 如果这是一个问题,那么请告诉我如何避免!
如果我将return语句放在try块中,那么错误就会出现“return语句在最后一个大括号之前丢失”

所以您需要问问自己,如果在
try{}
块的开头抛出异常会发生什么情况。如果发生这种情况,则不会为
result
赋值,因此您会收到该警告

您需要指定一个“默认”值,或者(重新)抛出一个适当的异常


由于您返回的是一个
结果集
,因此您可以使用此方法处理结果,这可能会为您提供一个返回null(或空可选)employee的替代方法。

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

您必须初始化程序的所有分支。如果您不小心,您的变量可能无效

Put
result=null在您的catch块中

如果您的变量是有效的final或final,则最好使用。选中此项:

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

我建议您声明
getSpecificularEmployee()
抛出
SQLException
,并让它继续运行,直到您找到一个特定于UI的方法,比如将
操作设置为按钮上的侦听器

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


您在资源方面也有问题。
PreparedStatement
应该关闭,但是当方法返回时,您将无法跟踪它。此外,在您完成使用
ResultSet

之前,它不能关闭。如果抛出
SQLException
,它将不会初始化。如果抛出异常,则局部变量
result
可能从未初始化。“此警告仅仅是一个警告,会不会产生一些严重后果?”这是一个编译器错误,所以是的。对不起,除了技术注释外,我真的不理解代码注释中smilie:)的合理性。结果可能永远不会被初始化,因为它是在try块中初始化的。这将导致编译时警告。我会在创建变量时将其设置为null,或者设置一些值,让您知道try块是否失败。或者,您可以仅在catch块中将变量指定为null。
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 :)
    }