黑马程序员技术交流社区

标题: 关于finally问题 [打印本页]

作者: ztw    时间: 2014-7-28 18:11
标题: 关于finally问题
这个finally有什么用呢?感觉有没有都是一样的啊?求大神分析下。
作者: jerom023    时间: 2014-7-28 18:18
无论try所指定的程序块中是否抛出异常,finally所指定的代码都要被执行,通常用来做资源的清除工作,如关闭打开的文件、删除临时文件等
作者: 李彦来    时间: 2014-7-28 18:31
你看到IO那块就知道了....
作者: 暗夜星辰    时间: 2014-7-28 18:41
finally很有用,主要用户关闭资源。IO流的时候一定要写finally
作者: 暗夜星辰    时间: 2014-7-28 18:43
finally很有用,主要用与关闭资源。IO流的时候一定要写finally,用于释放资源。
PS:finally只有在System.exit(0);后退出jvm,这种情况finally不执行
作者: 面向对象    时间: 2014-7-28 18:43
finally 主要是在try块发生异常时,进行一些资源的关闭工作。
如果try块发生异常,异常直接到catch里面,这时就需要到finally里面去关闭资源。
作者: 黑马_java猿    时间: 2014-7-28 18:52
finally的作用就是处理善后
作者: 怀念黑海岸    时间: 2014-7-28 20:08
finally中的代码是程序必须执行的,不管有没有异常产生,不管finally前面有没有return方法,也不管前面有没有break,continue关键字,他都会在这些方法关键字之前运行完其中的代码,这样子保证了确定做的事情,就像你操作数据库失败了,这儿定义一个finally语句关闭连接是不是很有用啊。
作者: 王乐乐    时间: 2014-7-29 16:47
和try{}catch{}结合使用,因为finally{}里面的代码最终一定会被执行,所以通常用于关闭资源。
作者: 挥斥方遒    时间: 2014-7-29 16:53
王乐乐 发表于 2014-7-29 16:47
和try{}catch{}结合使用,因为finally{}里面的代码最终一定会被执行,所以通常用于关闭资源。 ...

意思就是一般.close()就写到finally呗。。?
作者: 王乐乐    时间: 2014-7-29 16:55
挥斥方遒 发表于 2014-7-29 16:53
意思就是一般.close()就写到finally呗。。?

对,你可以看看毕向东老师的异常处理部分的视频,讲得很详细。
作者: Ezreal    时间: 2014-7-29 17:05
用于关闭资源啊,不然不执行finally会占空间浪费资源
作者: 微小宝    时间: 2014-7-29 17:30
好厉害的样子!!!
作者: 叶飞翔    时间: 2014-7-29 19:55
finally代码块常用于释放资源使用,你把异常那部分视频看完就能明白了。
作者: 晓风    时间: 2014-7-29 20:17
finally是不论程序是否出现异常,都会执行的代码块。怎么使用就看实际的需求了。通常用于关闭资源。比如使用JDBC操作数据库时,要使用try-catch-finally块关闭资源;再有就是在使用IO流操作文件的时候,也同样使用finally关闭资源。finally在使用时必须要跟一个try块一起使用。只有一种情况下finally块不会执行:就是在finally之前调用System.exit(0);手动退出程序。注:0代表正常关闭状态,非0值表示异常关闭状态。
作者: huangxuanheng    时间: 2014-7-29 20:35
想了解更多,请点击http://blog.csdn.net/huangxuanheng/article/details/38060055
作者: 梧桐树下    时间: 2014-7-29 23:28
线程,释放lock锁也用的到
作者: Peach2014    时间: 2014-7-29 23:42
Finally
一般是跟在Try-Catch语句之后的,作用说通俗一点就是给程序善后的。java中虽然有很好的垃圾回收机制,但是有些资源还是要手动去关闭的,不然程序的持续运行会对系统造成很大的压力。
Try-Catch语句中可能会引发各种异常,异常的发生可能让程序在代码中的任何一处意外终止并跳转。这时,你可能还没来得及去关闭你已经占用的资源。但是有了Finally,这个问题就不那么需要担心了(之所以说不那么,是因为有两种情况Finally中的语句也不会被执行
1.遇到System.exit(0)
2.发生RuntimeException
这两种情况就需要特殊处理)
总之,finally中的语句一般是你程序最后必须要执行的语句。






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