我经历了一些在求职面试中经常被问到的问题(至少在我的国家 - 瑞士),而且我对一块应该是棘手的代码块的输出非常不确定。听听你认为正确的答案是很好的。
这里是:
 public class LanguageTest12 {
public static void main(String... args){
System.out.println(foo());
}
private static int foo() {
int a = 1, b = 2;
try {
return a+b;
} finally {
a = 10;
b = 20;
return a+b;
}
}
}
但我知道答案必须是这三种可能性之一:
(PS:以防有人感兴趣,以下是所有问题:http://se.inf.ethz.ch/courses/2014a_spring/JavaCSharp/exercise_sessions/ExerciseSession5.pdf)
答案 0 :(得分:4)
finally
块用于必须始终运行的代码,无论是否发生错误条件(异常)。
finally块中的代码在try块完成后运行,如果发生捕获的异常,则在相应的catch块完成后运行。它应该始终运行,即使try或catch块中发生未捕获的异常(除非你在try块中有System.exit(0),因为它会在转到之前关闭应用程序最后阻止)。
所以你的回答是2. 30