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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燿陚√揚葳 中级黑马   /  2014-6-26 17:44  /  1149 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燿陚√揚葳 于 2014-6-26 19:19 编辑

finally为最后一定会执行的语句,那么如下
public class Demo {
public static void main(String[] args){
  try{
   return;
  }
  finally{
   System.out.println("ok");
  }
}
}
return不是用来终止方法运行的吗?当执行到了return那么为什么系统还会继续继续执行finally中的语句呢?
还请详细告知一下,谢谢了!

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

6 个回复

倒序浏览
finally语句中可以释放一些资源的操作,比如IO流,当你在进行IO操作是,由于发生异常什么的,程序被终止但是资源却还没释放,这就需要用finally还进行关闭了..........
回复 使用道具 举报
try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 1 0
简单而形象的说就是方法在顺序化的一直往下走,走着走着,发现了rerurn(但并未执行),它知道它快活不下去了,临死前.他就去找Finally,让Finally把事情做完.举个例子:在jdbc中我们用try中的return返回数据,而让finally关闭数据库
回复 使用道具 举报
luojunwei1992 发表于 2014-6-26 18:18
简单而形象的说就是方法在顺序化的一直往下走,走着走着,发现了rerurn(但并未执行),它知道它快活不下去了,临 ...

恩恩,谢谢你了,我懂了
回复 使用道具 举报
finally用于关闭资源,和try catch 并用 为了就是发生异常 还是能关闭资源的说
回复 使用道具 举报
798 初级黑马 2014-6-26 20:21:21
7#
不仅return如此,break,throw  等遇见finally也一定是先执行finally代码块,只有一种情况不会执行finally,
当遇见System.exit(0).
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马