黑马程序员技术交流社区

标题: java异常中的finally具体有什么作用 [打印本页]

作者: zclove898    时间: 2011-12-12 23:29
标题: java异常中的finally具体有什么作用
本帖最后由 zclove898 于 2011-12-13 00:31 编辑

      在学习中遇到一个不明白的地方,在java异常中得finally到底有什么用处,希望讲得通俗点,谢谢
作者: 杨旭    时间: 2011-12-12 23:40
finally 关键字是对 Java 异常处理模型的最佳补充。 finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。
作者: t_mac    时间: 2011-12-12 23:41
本帖最后由 t_mac 于 2011-12-12 23:45 编辑

finally中的语句一般用来关闭程序执行过程中系统打开的资源或是删除一些临时文件,在涉及到IO包时用的比较多

注意:
1.finally不管出现异常与否,都必须去执行的代码。
2.当try里面的代码没有异常的时候,会执行该try块对应的finally块,并继续执行finally之后的代码。
3.当try里面的代码出现异常的时候,会执行该try块对应的catch块和finally块,且即使catch中有返回finally也是要执行。也就是先执行完finally中的语句,再返回catch中的return。
4.finally中如果有return的情况,那么即使catch中有return,这个return也不起作用,该方法调用要到finally中的return才返回。

作者: zclove898    时间: 2011-12-13 00:30
t_mac 发表于 2011-12-12 23:41
finally中的语句一般用来关闭程序执行过程中系统打开的资源或是删除一些临时文件,在涉及到IO包时用的比较多 ...

讲得很详细,谢谢了
作者: 刘志祥    时间: 2011-12-13 14:57
补充一点:如果在try中遇到System.exit(0);那么,finally中的代码就不会被执行。
这一点非常重要。
作者: zclove898    时间: 2011-12-13 22:48
刘志祥 发表于 2011-12-13 14:57
补充一点:如果在try中遇到System.exit(0);那么,finally中的代码就不会被执行。
这一点非常重要。 ...

呵呵。谢谢了
作者: 黑马巩伟伟    时间: 2011-12-14 00:04
楼主你就记四个字 : 释放资源
作者: 应国炎    时间: 2011-12-14 12:36
必须执行的代码就放那里面. 比如释放连接.




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