黑马程序员--try catch中的return

忽然看到了有小伙伴提问基础测试中的一个题:

在try{}catch(){}中有return语句,这样还会不会执行finally{},或则是谁先执行,谁后执行?

首先给出答案是:当代码执行到了return语句的时候,会先执行finally,然后在执行try{}catch(){}中的return返回 值,但是如果finally中return了,那么执行完了finally中的return后直接返回值,不会再执行try{}catch(){}中的 return了。

下面是几种情况:(直接上图了)

1.这两种情况其实是一样的,就是return的位置变了

                                        图1                                                                                            图2

3.图三中的System.out.println("你好");没有输出来,这说明执行到了catch中的return时,它先执行finally,finallu中没有return,那么返回catch中的return,此时最下面的return不会执行。

4.图四中返回了finally中的return,所以结果是40,而原来catch中的return不会执行了

                                    图3                                                                                               图4

★还有看到问return和return null的区别:

首先说一下,return的两个作用:1,返回方法指定类型的值;2,直接return,结束方法(和break结束循环一样,就是finally那里有点异常)

那么return的返回类型必须是void,他就是结束方法的,而return null;的返回类型是引用类型的,不能是基本数据类型或void

转载于:https://www.cnblogs.com/xietianhang/p/4993078.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值