我知道在finally块中返回会导致意外结果,例如未捕获的异常会丢失。但我在这里想要了解的是Eclipse建议修复警告"finally block does not complete normally"
。
请考虑以下代码段:
catch (SQLException se)
{
System.out.println("Exception occured in the database");
System.out.println("Exception message: "+ se.getMessage());
System.out.println("Database error code: "+ se.getErrorCode());
se.printStackTrace();
}
finally
{
// Clean up
if(callStmt != null)
{
try
{
callStmt.close();
}
catch (SQLException se2)
{
se2.printStackTrace();
}
}
if(conn != null)
{
try
{
conn.close();
}
catch (SQLException se2)
{
se2.printStackTrace();
}
}
return newEmpSalary;
}
}
对于上面的代码,Eclipse Luna
会发出警告"finally block does not complete normally"
,建议修正为:
应用上面的修复仍然不会使警告消失。我知道我只需要删除return语句就可以删除它。
但我很想知道为什么Eclipse在这种情况下建议修复"Change modifiers to final where possible"
。
答案 0 :(得分:2)
Eclipse始终无法摆脱错误,因此它会建议其他可能有助于或导致其确实知道如何解决的错误的事情。
将return newEmpSalary;
移出finally块将删除错误。