try中的return和finally谁先执行?

当try中的return要返回的时候,先将要返回的值存储起来,然后执行finally中的语句,然后再将存储的值返回,即或finally中又对此值进行了修改,但已经晚了,因为它返回的是已经存储的值。
例:

public static int aa(){
	int i=0;
	try {
		return ++i;
	} catch (Exception e) {
		return 5;
	} finally{
		++i;
		System.out.println("我执行过了");
	}
}

  

调用此方法,输出为:
我执行过了
1

 

那如果是下面这样呢

public static int aa(){
	try {
		return 1;
	} catch (Exception e) {
		return 2;
	} finally{
		return 3;
	}
}

  结果为3

posted @ 2021-01-06 13:31  爱喝葡萄酒  阅读(214)  评论(0)    收藏  举报