在finally块之前放置return语句是一个好的做法吗?

问题描述 投票:0回答:4

我想知道下面的代码根据 Java 标准是否正确。 return语句可以放在try块之后吗?或者将 return 语句放在finally 块中总是好的。请帮我解决这个问题

public int method()
{
    try{
        //code
        return 1;
    }
    catch(Exception e){
        return 0;
    }
    finally{
    }
}
java return try-catch finally
4个回答
7
投票

return
放入
try
甚至放入
catch
es 中绝对没问题:做最清晰的事情。但请注意不要丢弃太多异常,尤其是
java.lang.Throwable
,因为这样做可能会干扰 JVM 的工作。

请注意,如果

return
块中有一个 finally
,则将计算另一个 
return
 中的表达式 
still,但结果将被丢弃,并返回 finally
 块中的返回值返回给呼叫者。因此,不鼓励将 
return
 值放入 
finally
 块中。


0
投票
最终主要用于清理应用程序中的资源。 如果代码中存在finally块,即使没有捕获到异常,它也总是被执行。 你可以在try块后面放置return语句。当没有捕获到异常时,它将被执行。


0
投票
芭丝谢芭解释得很好。添加到它,即使您放置 return 语句,控制也不会返回,并且当执行最终块时,控制将返回。如果您按照解释在 Final 块中编写 return ,它将覆盖之前的 return 语句。


0
投票
将 return 语句放在finally 块中并不是一个好的做法。由于finally块的return语句优先于代码中其他地方提到的其他return语句。

但是,我们可以将 return 语句放在 try/catch 块中。那绝对没问题!

但是,如果你在finally块中放入return语句,那么Java将认为它是最终返回值。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.