您的位置:首页 > 其它

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

2016-08-22 17:01 411 查看
转自:http://wenku.baidu.com/link?url=JTwPXCYiIBkfqx0gzl0liVVDn94c8Qya6s5z8IfB3HXZxF4EFMDGQC-NnAjoBcDNuocNE_ceYfn08468lvrrdx8ZSFJCS_ndK6x8s3_lJXe

finally是一定会执行的

只有代码中有system.exit() 这一种情况 才不会执行finally
因为终止了虚拟机进程
finally会在return之前执行
如果在finally里面有return情况会更复杂

代码如下:

情况一:

package test;

public class Atest {
public int test(){
try {
System.out.println("aaa" );
return 123;
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("bbb" );

}
return 456;
}

public static void main(String[] args) {
Atest a = new Atest() ;
System.out.println(a.test());
}

}

执行结果:

aaa

bbb

123

情况二:

package test;

public class Atest {
public int test(){
try {
System.out.println("aaa" );
return 123;
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("bbb" );
return 456;
}

}

public static void main(String[] args) {
Atest a = new Atest() ;
System.out.println(a.test());
}

}

执行结果:

aaa

bbb

456
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐