黑马程序员技术交流社区
标题:
关于finally的问题
[打印本页]
作者:
燿陚√揚葳
时间:
2014-6-26 17:44
标题:
关于finally的问题
本帖最后由 燿陚√揚葳 于 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中的语句呢?
还请详细告知一下,谢谢了!
作者:
唤月
时间:
2014-6-26 17:58
finally语句中可以释放一些资源的操作,比如IO流,当你在进行IO操作是,由于发生异常什么的,程序被终止但是资源却还没释放,这就需要用finally还进行关闭了..........
作者:
luojunwei1992
时间:
2014-6-26 18:08
try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
作者:
luojunwei1992
时间:
2014-6-26 18:18
简单而形象的说就是方法在顺序化的一直往下走,走着走着,发现了rerurn(但并未执行),它知道它快活不下去了,临死前.他就去找Finally,让Finally把事情做完.举个例子:在jdbc中我们用try中的return返回数据,而让finally关闭数据库
作者:
燿陚√揚葳
时间:
2014-6-26 18:22
luojunwei1992 发表于 2014-6-26 18:18
简单而形象的说就是方法在顺序化的一直往下走,走着走着,发现了rerurn(但并未执行),它知道它快活不下去了,临 ...
恩恩,谢谢你了,我懂了
作者:
马到成功2014
时间:
2014-6-26 18:47
finally用于关闭资源,和try catch 并用 为了就是发生异常 还是能关闭资源的说
作者:
798
时间:
2014-6-26 20:21
不仅return如此,break,throw 等遇见finally也一定是先执行finally代码块,只有一种情况不会执行finally,
当遇见System.exit(0).
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2