为了账号安全,请及时绑定邮箱和手机立即绑定

不是return过后就退出了吗,finally可以继续执行,那为什么finally之后的也能执行呢

public int test3(){
		int divider=10;
		int result=100;
		try{
			while(divider>-1){
				divider--;
				result=result+100/divider;
			}
			return result;
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("循环抛出异常了!!!");
		}finally{
			System.out.println("这是finally!!!哈哈!!!");
			System.out.println("我是result,我的值是:"+result);
		}
		System.out.println("我是test3!我运行完了!表想我!~");
		return 1111;
	}


正在回答

2 回答

return的常用作用有以下两种
一种是返回参数所用的关键字,假如一个有返回值的方法执行完了之后需要返回一个参数,示例:public string functionTest(){
        String a = "abc";
        return a;
}
那么这个方法被调用之后就会返回一个值为abc的字符串,string result = functionTest();

第二种用法是,代码执行到此处终止。
比如当代码执行到某个地方会出现几种结果,然后其中一种结果就不能执行后续代码,这时候在那里加上一个return就可以终止后面的代码执行。

1 回复 有任何疑惑可以回复我~
#1

慕粉18817939419 提问者

请问下:我上面那段代码中,(1)直接运行的话,输出的是最后的return的1111的值。(2)如果我把try后面的return放到catch当中,然后返回的是catch当中的return的值,finally后面的输出和return就没用了。(3)try后面和catch后面都放return,是try当中的return没运行还是被catch的return覆盖了,和(1)是同样的意思吗?
2016-07-20 回复 有任何疑惑可以回复我~
#2

慕粉18817939419 提问者

是不是try当中的return只是单纯的返回一个值,就是你说的第一种情况,放catch和方法最后就是你说的第二种情况。。。。。。。。
2016-07-20 回复 有任何疑惑可以回复我~
#3

慕粉18817939419 提问者

非常感谢
2016-07-20 回复 有任何疑惑可以回复我~
#4

慕粉18817939419 提问者

大概清楚了,catch里面执行是不是就和在方法里面执行一样的意思,try里面执行的就相当于方法里面再有一个方法?所以return有这2种情况,try里面返回他里面方法的值,catch返回的就是所在这整个方法的值,然后终止了函数,但是都不会影响finally的运行。。。。是不是这样的情况,可能说法不是很规范,我自己理解的方式。。。
2016-07-20 回复 有任何疑惑可以回复我~
#5

欧巴么么哒 回复 慕粉18817939419 提问者

try中的循环一旦发现异常,则直接去执行catch块,而不会继续执行循环后面的语句,所以try中的return不会执行。
2016-07-21 回复 有任何疑惑可以回复我~
#6

慕粉18817939419 提问者 回复 欧巴么么哒

原来如此,这下明白了,非常感谢
2016-07-21 回复 有任何疑惑可以回复我~
查看3条回复

Finally代码块的优先级比较高,不论TryCatch代码块如何运行,最后都要执行Finally代码块

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409789    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

不是return过后就退出了吗,finally可以继续执行,那为什么finally之后的也能执行呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信