黑马程序员技术交流社区
标题:
return的七十二变(try,catch,finally)
[打印本页]
作者:
001可望成功
时间:
2014-7-13 18:44
标题:
return的七十二变(try,catch,finally)
本帖最后由 001可望成功 于 2014-7-13 18:46 编辑
忽然看到了有小伙伴提问基础测试中的一个题:
在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
作者:
一十二。
时间:
2014-7-13 20:57
学习了学习了学习了学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2