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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付左军 中级黑马   /  2012-5-13 23:23  /  1615 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果try{}语句中有return,finally什么时候被执行

6 个回复

倒序浏览
finally一定会在try语句的return之前被执行。
但是需要注意的一点事,finally对局部变量进行修改,return的时候返回的依旧是try语句里的执行值
而不是finally语句的修改值。

这个问题之前没注意到,楼主可以关注这个帖子,问题问的角度很特别,引人深思。
http://bbs.itheima.com/forum.php ... amp;page=1#pid78651
希望楼主可以从中有所收获!

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
finally是绝对会执行的语句,就算前面有return,或者已经出现异常了,他都会执行,不过除了System.exit(0);不执行,因为这是退出虚拟机命令
finally一般用于io流去关闭开启后的流
回复 使用道具 举报
  1. public class TryCatch {
  2.         public static void main(String[] args){
  3.                 try {
  4.                         System.out.println("1");
  5.                 } catch (Exception e) {//没有异常抛出  不执行
  6.                         System.out.println(2);
  7.                 }finally{
  8.                         System.out.println(3);
  9.                 }
  10.         }
  11. }
复制代码
输出 1 和 3
  1. public class TryCatch {
  2.         public static void main(String[] args){
  3.                 try {
  4.                         System.out.println(1/0);//除数不能为0
  5.                 } catch (Exception e) {//抛出异常  catch代码块运行
  6.                         System.out.println(2);
  7.                 }finally{
  8.                         System.out.println(3);
  9.                 }
  10.         }
  11. }
复制代码
输出 2和 3
所以 finally 是不管前面try{}里面和cathc{}里面是否运行 finally{}都会运行

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
try{}finally{}给我们提供了一个“保证某个动作必然执行”的机会。

一个try-finally结构,只要try块开始执行了,finally块里面的代码保证执行一次并且只有一次。
打个比方,就象你上厕所,只要你一旦开始拉了,我们保证无论如何,是拉稀了也好,放屁了也罢,最终你肯定是擦了屁股走出卫生间。
应用try-finally,我们可以在异常满天飞的程序里保证我们的关键资源被按时正确清理。一个最常见的应用就是jdbc的Connection, Statement, ResultSet等。

这是前天我回答另一个问这个问题的答案,
参考下http://bbs.itheima.com/forum.php ... amp;page=1#pid80249
回复 使用道具 举报
于陈 发表于 2012-5-14 12:17
这是前天我回答另一个问这个问题的答案,
参考下http://bbs.itheima.com/forum.php?mod=viewthread&tid=14 ...

.........................
回复 使用道具 举报
finally总会执行,除非System.exit(0);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马