关于java中的if-else与finally,return的结合使用

 

 

 

 

 

 

 

 

public static void main(String[] args) {
		int i = 2;
		try{
			if(1==i){
				System.out.println("i==1");
			}
			else{
				System.out.println("i==其他");
				return ;
			}
		}
		catch(Exception e){
			e.printStackTrace();
		}
		finally{
			System.out.println("不论如何都执行finally");
		}

	}

 

好有意思的执行过程,加断点试试.请问下第九行中的return最后return到哪了呢?

收藏 (0)分享

微博QQ微信

举报

加载中

最多投票 最新

0

xlsx

xlsx

2015/06/08 14:13

把return改为System.exit(0);效果就又不一样了

评论 (0) 引用此答案 举报

0

R-Lu

R-Lu

2013/01/21 16:53

这个好像是一个面试题,就是问你是return是在finally执行之前还是之后执行,答案是在finally执行之后返回.

评论 (0) 引用此答案 举报

0

freish

freish

2013/01/20 10:44

这只是源码层次的表现形式,可以想象下 编译器编译后将return放到哪里去了

评论 (0) 引用此答案 举报

0

星星爷

星星爷

2013/01/19 23:53

http://download.oracle.com/otndocs/jcp/jvm-se7-mr3-approved-oth-JSpec/

评论 (0) 引用此答案 举报

0

狐狸糊涂

狐狸糊涂

2013/01/19 23:29

对于异常处理的部分,每个catch和finally都对应的有自己的代码快。 你这个例子中,程序在执行try和catch的代码之后必须进入finally执行对应的代码,如果中间又return语句,那么也会先进入finally部分执行完毕之后再return(但是如果finally中有return的话,会再finally中直接跳出当前方法并返回)。  虚拟机的规范规定虚拟机的实现是必须这么做的。 

具体细节可以参考java虚拟机规范。

评论 (0) 引用此答案 举报

0

天马行空&

天马行空&

2013/01/18 14:03

引用来自“xiangmao”的答案

先执行了finally,再执行的return,return之后程序就结束了。

这个是对的

评论 (0) 引用此答案 举报

0

xiangmao

xiangmao

2013/01/18 12:52

先执行了finally,再执行的return,return之后程序就结束了。

评论 (1) 引用此答案 举报

Chizze

Chizze

2013/01/18 14:05

return 语句可以使其从当前方法中退出,返回到调用该方法的语句处,继续程序的执行。我就不明白他为什么执行完了之后又跳到return 所在处呢,干什么去了?

回复 举报

0

天马行空&

天马行空&

2013/01/18 12:18  iPhone

到finally了,没有finally到方法尾结束

评论 (1) 引用此答案 举报

Chizze

Chizze

2013/01/18 12:19

你可以加断点试试

回复 举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值