A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毕博 中级黑马   /  2012-4-25 19:20  /  1640 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

4 个回复

倒序浏览
在return中执行
主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函数要返回结果时,先把结果放在罐子里,然后再将程序逻辑返回到主函数。所谓返回,就是子函数说,我不运行了,你主函数继续运行吧,这没什么结果可言,结果是在说这话之前放进罐子里的。
回复 使用道具 举报
1. 如果try  块中存在 return 语句,那么首先也需要将finally  块中的代码执行完毕,然
   后方法再返回。
2. 如果 try   块中存在 System.exit(0)语句,那么就不会执行 finally            块中的代码,因为
   System.exit(0)会终止当前运行的Java 虚拟机,程序会在虚拟机终止前结束执行。
回复 使用道具 举报
finally{}一定会执行,当try{}中的语句没有发生异常return语句会先运行,然后finally中的语句会运行,当try{}中的语句发生异常,return不会运行。catch语句运行,然后finally语句运行。
回复 使用道具 举报
finally{
里面的句子一定会执行
}
后面的 要看 前面是不是 发生异常

如果try{}里面的 正常执行完后 finally 做结束处理 那么

finally{} 后面还有 那当然会执行

如果 try{} 发生异常 到catch{}捕捉 或直抛出 然后执行finally{}

里面的,但是后面的代码就不会执行了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马