发新话题
打印

java异常处理?

下面代码的输出问题:

public class A{
public static int test(int x) {
  try {
   if (x == 0)
    throw new Exception("x is 0");

   return ++x;
  } catch (Exception e) {
   System.out.println("Wrong");

   return 0;

  } finally {
   System.out.println("Finally");
  }
}

public static void main(String[] args) {
  System.out.println(test(0));
}

}
输出是:
Wrong
Finally
0
为什么先输出Finally而不是0?请详解?

TOP


关键点在于finally语句
java语法规定finally语句一定要执行,所以虽然return语句在finally语句前面,所以也还是会先执行finnally的语句,再执行return。因此出现了上面的输出结果。关于此点,你可以看看java关于异常处理部分的语法规则。

TOP

当编译器遇到return关键字,转而执行finally,执行完再执行return,如果没return则继续线性执行

TOP

发新话题