尝试/最后 - 求职面试

时间:2014-11-19 19:00:17

标签: java

我经历了一些在求职面试中经常被问到的问题(至少在我的国家 - 瑞士),而且我对一块应该是棘手的代码块的输出非常不确定。听听你认为正确的答案是很好的。

这里是:

 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;
     }
   }
 }

但我知道答案必须是这三种可能性之一:

  1. 3
  2. 30
  3. 33
  4. (PS:以防有人感兴趣,以下是所有问题:http://se.inf.ethz.ch/courses/2014a_spring/JavaCSharp/exercise_sessions/ExerciseSession5.pdf

1 个答案:

答案 0 :(得分:4)

finally块用于必须始终运行的代码,无论是否发生错误条件(异常)。

finally块中的代码在try块完成后运行,如果发生捕获的异常,则在相应的catch块完成后运行。它应该始终运行,即使try或catch块中发生未捕获的异常(除非你在try块中有System.exit(0),因为它会在转到之前关闭应用程序最后阻止)。

所以你的回答是2. 30