java中的try中的return与finally执行顺序关系

    try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {} 里的 code 会不会被执行, 什
么时候被执行,在 return 前还是后?
也许你的答案是在 return 之前,但往更细地说,我的答案是在 return 中间执行。
 
在TestTryReturn这个例子中的执行顺序为:用debug进行调试,会发现,先调用的是return,再调用finally,最后在调用return
public class TestTryReturn {

	public static void main(String[] args) {
		System.out.println(new TestTryReturn().testreturn());
	}
	static int testreturn()
	{
		int x=99;
		try
		{
			return x;
		}
		finally
		{
			System.out.println(x+1);
		}
	}
}

 

Return 并不是让函数马上返回,而是 return 语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行 finally 语句后才真正开始返回。


在TestTryReturn这个例子中的执行顺序为在TestTryReturn这个例子中的执行顺序为在TestTryReturn这个例子中的执行顺序为在TestTryReturn这个例子中的执行顺序为:先执行test中的return中的func1(),在执行finally中的return中func2()

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

	int test() {
		try {
			return func1();
		} finally {
			return func2();
		}
	}

	int func1() {
		System.out.println("func1");
		return 1;
	}

	int func2() {
		System.out.println("func2");
		return 2;
	}
}


结论:finally 中的代码比 return 和 break 语句后执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值