先考虑以下一个普通的示例:

public static int main() {
    System.out.println("没有参数的main方法");
    try{
        a=4/0;
    }catch(Exception e){
        return ++a;
    }
    finally{
        a++;
        System.out.println("在finally中成功捕获异常!"+a);           
    }
    System.out.println("成功捕获异常!"+a);
    return 1;
}
public static void main(String[] string) {
    System.out.println(main());
    System.out.println("此时a的值为:"+a);
}

这段代码执行以后就是:

没有参数的main方法
在finally中成功捕获异常!2
1
此时a的值为:2

从执行结果可以看到,finally语句块必然会执行。而且根据执行的结果可以看到,finally块的执行时间恰好在return 语句中的表达式语句之后(++a后).等finally语句最终执行完成,再最后执行return语句。也就是说finally语句块虽然一定会被执行,但是它却不能影响return语句表达式的值了。

Date: 2012-10-08 21:00:46 中国标准时间

Author: csophys

Org version 7.8.11 with Emacs version 24

Validate XHTML 1.0

相关文章:

  • 2021-06-02
  • 2022-12-23
  • 2022-12-23
  • 2022-01-25
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2022-02-23
猜你喜欢
  • 2022-12-23
  • 2021-10-07
  • 2022-12-23
  • 2022-12-23
  • 2022-03-08
  • 2022-12-23
  • 2021-07-16
相关资源
相似解决方案