黑马程序员技术交流社区
标题: try-finally 问题。 [打印本页]
作者: 黑马-陈思源 时间: 2013-3-28 18:29
标题: try-finally 问题。
本帖最后由 黑马-陈思源 于 2013-3-29 13:53 编辑
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 有人说是在return之前执行、、、那不是违背了一行一行执行的规律吗??
作者: _王涛 时间: 2013-3-28 19:20
本帖最后由 _王涛 于 2013-3-28 19:24 编辑
Java 编译器不允许有显示的执行不到的语句块,比如return之后就不可能再有别的语句块
;
当 try 中有 return 语句,java 先执行 try中非return 语句,再执行 finally 中的code语句;最后执行return。
作者: 黄杨 时间: 2013-3-28 22:24
在一个try-finally语句中,finally语句块总是在控制权离开try语句块时执行的。无论try语句块是正常结束的,还是意外结束的,情况都是如此。
也就是说先执行了finally中的语句,才执行try里面的return
作者: 寇弘禄 时间: 2013-3-28 22:43
本帖最后由 寇弘禄 于 2013-3-28 22:44 编辑
先执行try里的return 语句,然后在执行 finally里的return 语句,最后返回finally 里return 的值。
下面这段代码是我模仿别人的写的,看看你就明白了。- class Test1
- {
- public static void main(String[] args)
- {
- int i = new Test1().Method();
- System.out.println(i);
- }
- public int Method(){
- try{
- return Method1();
- }
- finally{
- return Method2();
- }
- }
- public int Method1(){
- System.out.println("111");
- return 1;
- }
- public int Method2(){
- System.out.println("222");
- return 2;
- }
-
- }
复制代码 结果是
111
222
2
作者: 黑马-陈思源 时间: 2013-3-29 13:51
谢谢 有点概念咯
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |