黑马程序员技术交流社区

标题: try {}里有一个return语句, [打印本页]

作者: 黄方    时间: 2012-3-11 22:57
标题: try {}里有一个return语句,
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
作者: 秦超    时间: 2012-3-11 22:59
finally {}里面的语句是一定会执行的,在try里面的语句执行完以后,就执行finally {}.所以finally {}里面都放着无论如何都要执行的语句
作者: 潘许超    时间: 2012-3-11 23:39
无论return语句是否执行,finally {}中的语句肯定要执行一次的,如果return语句也会执行的话,那样他会在finally之前,顾名思义finally语句是在最后执行的
作者: 刘豪杰    时间: 2012-3-11 23:43
finally{}里边的内容是一定要执行的,可以理解为是,try{}中retrun前边的语句先执行完,然后执行finally{}中的语句,最后执行try{}中的retrun语句。如果出现try{retrun;}
finally{retrun;}时,可以理解是先执行try{}中retrun前边的语句,然后执行finally{}中的语句,但是由于finally{}中有retrun语句,那么try{}内的retrun语句将不再执行
作者: 代臣    时间: 2012-3-11 23:59
这个得分情况:
1,当try块中存在System.exit(0);语句的时候,会使得当前线程中断执行,其实就是java虚拟机进程会结束,java虚拟机退出系统,当然就不会执行finally块中的语句了。
2,如果try块中有return语句,没有System.exit(0);,在return语句返回值之前,线程会去寻找方法中是否有finally块,有的话则在执行完finally块中的语句之后,再返回try中执行return并返回值给方法。还有一种情况是,如果finally块中也存在return语句,那么这个return语句会直接使得方法结束并返回值给方法,而不会回到try中去执行那个return语句。
这个具体在《疯狂java 突破程序员基本功的16课》这本书中有讲到,恰好最近看过那本书,希望对你有用。
作者: 谢明    时间: 2012-3-12 00:01
会执行 而且在  return 前执行    如果在  catch   中加入  System.exit(0);    finally中的语句不会执行。直接返回,退出程序
作者: 许圣建    时间: 2012-3-12 01:19
都只是试验得出的结果,具体到底是怎样的机制,搞不清楚,记住那几道经典面试题就OK了,会用就行,打算问问淘宝的一个专家去....




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2