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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵帅 中级黑马   /  2012-12-11 20:27  /  1732 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

            int number = 0;
            Console.WriteLine("请输入一个数字");
            try
            {
                number = Convert.ToInt32(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("输入的数字有误,请重新输入");
            }
            finally
            {
                Console.WriteLine("abc");
老师教的不管怎样,都执行finally,我不明白这没用有什么用,在什么情况下加这个finally啊

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

6 个回复

倒序浏览
在异常和异常处理中,紧跟在try后的finally{}里的Console.WriteLine("abc")始终会执行,而且是在number = Convert.ToInt32(Console.ReadLine());后执行。

评分

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

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2012-12-11 21:27
在异常和异常处理中,紧跟在try后的finally{}里的Console.WriteLine("abc")始终会执行,而且是在number = C ...

嗯,谢谢老师~
回复 使用道具 举报
这里的finally会一直之心,而try和catch正常情况下执行try语句,只有try语句出错了才会执行catch语句的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
finally多用户释放资源,例如释放数据库
回复 使用道具 举报
比如说你在try中使用了一个之前创建的资源,结果try中有问题出错了,后面资源释放语句不执行了,直接去catch中了,  你的资源就这样被霸占了!  这是就要用到finally,  不管语句有没有出现问题, finally一定执行!  一般都是用于清理资源的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
张文 中级黑马 2012-12-16 15:44:50
7#
老师的解释相当精辟啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马