Я знаю, что возврат в блок 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"
, для которого предлагается следующее исправление:
Применение вышеуказанного исправления по-прежнему не устраняет предупреждение. Я знаю, что мне просто нужно удалить оператор возврата, чтобы избавиться от него.
Но мне любопытно узнать, почему Eclipse предлагает исправление "Change modifiers to final where possible"
в этом случае.