Java 带有return语句的奇怪警告
以上是出于某种目的而编写的代码,我遇到了问题,我不明白为什么会发生这种情况:)Java 带有return语句的奇怪警告,java,Java,以上是出于某种目的而编写的代码,我遇到了问题,我不明白为什么会发生这种情况:) 这个警告仅仅是一个警告,会不会产生一些严重的后果? 如果这是一个问题,那么请告诉我如何避免! 如果我将return语句放在try块中,那么错误就会出现“return语句在最后一个大括号之前丢失”所以您需要问问自己,如果在try{}块的开头抛出异常会发生什么情况。如果发生这种情况,则不会为result赋值,因此您会收到该警告 您需要指定一个“默认”值,或者(重新)抛出一个适当的异常 由于您返回的是一个结果集,因此您可以
这个警告仅仅是一个警告,会不会产生一些严重的后果? 如果这是一个问题,那么请告诉我如何避免!
如果我将return语句放在try块中,那么错误就会出现“return语句在最后一个大括号之前丢失”所以您需要问问自己,如果在
try{}
块的开头抛出异常会发生什么情况。如果发生这种情况,则不会为result
赋值,因此您会收到该警告
您需要指定一个“默认”值,或者(重新)抛出一个适当的异常
由于您返回的是一个
结果集
,因此您可以使用此方法处理结果,这可能会为您提供一个返回null(或空可选)employee的替代方法。您的结果集未初始化,因此如果try catch中存在异常,则可以取消定义。初始化为null更正确、更清晰。您必须初始化程序的所有分支。如果您不小心,您的变量可能无效
Putresult=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 :)
}