请参阅以下代码并解释输出行为。返回语句在catch中的行为,最后
public class MyFinalTest {
public int doMethod(){
try{
throw new Exception();
}
catch(Exception ex){
return 5;
}
finally{
return 10;
}
}
public static void main(String[] args) {
MyFinalTest testEx = new MyFinalTest();
int rVal = testEx.doMethod();
System.out.println("The return Val : "+rVal);
}
}
结果是返回瓦尔:10
Eclipse中显示一个警告:finally block does not complete normally
。
catch块中的return语句会发生什么?
的可能重复[为什么改变返回的变量在finally块不会改变返回值?](http://stackoverflow.com/questions/ 16030858 /为什么要改变返回变量在最后块不改变回报) – fglez 2013-04-30 07:32:21
一个非常受欢迎的面试问题。 – 2014-06-29 20:09:12