免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8390 | 回复: 12
打印 上一主题 下一主题

[C++] 关于try catch 之后的疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-16 16:58 |只看该作者 |倒序浏览
这个finally真有用吗?如果没有异常很显然finally之后的代码会执行,如果发生了异常被catch到,finally之后的代码会正常执行,如果发生了异常但是没有catch能捕获,就是有finally也不会执行,而且有的C++代码后没有finally块,这有什么区别呢。

论坛徽章:
0
2 [报告]
发表于 2011-11-16 21:56 |只看该作者
“如果发生了异常但是没有catch能捕获,就是有finally也不会执行”,为什么不会执行finally?哪里看到的?

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2011-11-17 08:30 |只看该作者
C++的try catch没有finally,因为有析构函数,不需要丑陋的finally

论坛徽章:
0
4 [报告]
发表于 2011-11-17 09:33 |只看该作者
finally是java里面的吧, 即使catch没有捕获到,finally还是要执行的。。。

论坛徽章:
11
未羊
日期:2013-12-16 12:45:4615-16赛季CBA联赛之青岛
日期:2016-04-11 19:17:4715-16赛季CBA联赛之广夏
日期:2016-04-06 16:34:012015亚冠之卡尔希纳萨夫
日期:2015-11-10 10:04:522015亚冠之大阪钢巴
日期:2015-07-30 18:29:402015亚冠之城南
日期:2015-06-15 17:56:392015亚冠之卡尔希纳萨夫
日期:2015-05-15 15:19:272015亚冠之山东鲁能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16赛季CBA联赛之八一
日期:2016-07-22 09:41:40
5 [报告]
发表于 2011-11-17 11:06 |只看该作者
多半是windows 异常机制中的 finally

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
6 [报告]
发表于 2011-11-17 12:45 |只看该作者
多半是windows 异常机制中的 finally
zylthinking 发表于 2011-11-17 11:06



    不会吧,那楼主口口“C++”,且SEH中的是 __try __except __finally,而非 try catch

论坛徽章:
0
7 [报告]
发表于 2011-11-17 16:09 |只看该作者
不会吧,那楼主口口“C++”,且SEH中的是 __try __except __finally,而非 try catch
bruceteen 发表于 2011-11-17 12:45



    不见得,很多人会搞错,而且一直错下去的

论坛徽章:
0
8 [报告]
发表于 2011-11-26 11:01 |只看该作者
本帖最后由 lf541513 于 2011-11-26 11:07 编辑

回复 2# lenky0401


    如果异常,程序都崩溃了,finally里的语句还可以执行到吗?至少在我自己用VS2008测试的时候主动抛出一个整数的异常在下文没有捕获,finally里的输出没有向屏幕打印任何东西。

论坛徽章:
0
9 [报告]
发表于 2011-11-26 11:05 |只看该作者
回复 4# hbxfzzq_hm


    我在VS2008里发现C++ 里的finally也可以用,但是抛出的异常没有被捕获的话finally里的输出不会打印,所以有此疑问中,对于java就没有去调试了。

论坛徽章:
0
10 [报告]
发表于 2011-11-26 11:16 |只看该作者
不会吧,那楼主口口“C++”,且SEH中的是 __try __except __finally,而非 try catch
bruceteen 发表于 2011-11-17 12:45



貌似VC会智能地把_xxxx处理成xxxx,还会智能地把xxxx处理成_xxxx

我觉得VC下计较那个下划线没意义...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP