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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zclove898 高级黑马   /  2011-12-12 23:29  /  4300 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zclove898 于 2011-12-13 00:31 编辑

      在学习中遇到一个不明白的地方,在java异常中得finally到底有什么用处,希望讲得通俗点,谢谢

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

7 个回复

倒序浏览
杨旭 黑马帝 2011-12-12 23:40:43
沙发
finally 关键字是对 Java 异常处理模型的最佳补充。 finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源。
回复 使用道具 举报
t_mac 黑马帝 2011-12-12 23:41:33
藤椅
本帖最后由 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才返回。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
t_mac 发表于 2011-12-12 23:41
finally中的语句一般用来关闭程序执行过程中系统打开的资源或是删除一些临时文件,在涉及到IO包时用的比较多 ...

讲得很详细,谢谢了
回复 使用道具 举报
补充一点:如果在try中遇到System.exit(0);那么,finally中的代码就不会被执行。
这一点非常重要。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1 很给力!

查看全部评分

回复 使用道具 举报
刘志祥 发表于 2011-12-13 14:57
补充一点:如果在try中遇到System.exit(0);那么,finally中的代码就不会被执行。
这一点非常重要。 ...

呵呵。谢谢了
回复 使用道具 举报
楼主你就记四个字 : 释放资源
回复 使用道具 举报
应国炎 黑马帝 2011-12-14 12:36:00
8#
必须执行的代码就放那里面. 比如释放连接.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马