我有一个简单的怀疑。在以下两个代码中,第一个return
语句放在finally
块中
public int method1(){
try{
// Some Stuff
} catch(Exception e){
e.printStackTrace();
} finally{
return 0;
}
}
并在第二个return
语句中正常放置
public int method1(){
try{
// Some Stuff
} catch(Exception e){
e.printStackTrace();
} finally{
}
return 0;
}
这两者有什么区别吗?哪个可以作为更好的选择?为什么呢?
答案 0 :(得分:6)
在finally块中使用“return”不是一个好习惯。由于两个原因,finally
块可以执行:
(a)try
块抛出异常(并没有被catch
块捕获) - 在这种情况下,该方法将没有返回值,因此return something
语句中的try
语句finally块将无效。
(b)return something
块正常完成。如果该块以{{1}}结尾,则代码对读者来说有点混乱,因为现在有两个相关的返回语句,并且不清楚哪个应该优先于另一个。