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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯鹏飞 黑马帝   /  2011-7-28 13:08  /  1970 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在多个try-catch有时会加上finally,finally和它们有什么关系?内部具体是如何执行的?finally在这里有特殊的作用吗?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

7 个回复

倒序浏览
黑马网友  发表于 2011-7-28 13:48:34
沙发

回复 楼主 的帖子

finally里的代码是最后都会处理,参与执行的,一般会把释放资源的一些操作代码放到里面。一般程序有故障了会终止不在进行,但遇到finally后是必须执行完finally中的代码后才可以终止运行,报告异常的。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边了的都有!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-28 14:10:01
藤椅
try语句块中无论是否遇到异常,finally子句中的代码都会被执行,一般起到回收资源的作用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边了的都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-28 14:21:56
板凳

回复 楼主 的帖子

无论异常是否被抛出,finally里面的代码是必须执行的。可以是程序员保证:无论try块里发生了什么,内存总能被释放。
当要把除内存之外的资源恢复到他们的初始状态时,就要用到finally字句。[code]//finally字句总是执行
class TreeException extends Exception {}
public class FinallyWorks{
        static int count = 0;
        public static void main(String[] args)
        {
                while(true)
                {
                        try {
                                if(count++ == 0)
                                  throw new TreeException();
                                System.out.println("No Exception");
                                }
                        catch(TreeException e){
                                System.out.println("TreeException");
                                }
                        finally {
                                System.out.println("In finally clause");
                                if(count == 2) break;// 跳出while
                                }
                        }
                }
        }[/code]

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-28 22:05:20
报纸
finally语句都放在最后,是必执行的语句,一般用于报考一些信息。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边了的都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-28 22:56:00
地板

回复

finally是必须要执行的,无论你有没有异常,但如果在finally之前已经发生return xxx你就不用执行finally的操作了

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边了的都有分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-29 00:11:21
7#

回复 板凳 的帖子

谢谢你的详细解答,明白了…
回复 使用道具 举报
黑马网友  发表于 2011-7-29 14:38:06
8#

Finally解答

所谓Finally,就是无论你成功或是失败, 跟我没关系,我就是要执行我的,你走你的路,我过我的桥,谁不影响谁,但是无论前面是死是活,我都要走.我很执着的!

评分

参与人数 1技术分 +1 收起 理由
admin + 1 答到边了的都有分!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马