免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wwdwwd
打印 上一主题 下一主题

[C++] c++开发代码中到底该不该用异常? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-04-26 09:44 |只看该作者
有很多人说了区别, 还是不太懂啊。 不知道错误码和异常的根本区别。

c 就没有异常。

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
12 [报告]
发表于 2010-04-26 09:48 |只看该作者
前段时间总结了一下异常:http://hi.baidu.com/baowup/blog/ ... dcbdce7d1e7105.html

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
13 [报告]
发表于 2010-04-26 10:12 |只看该作者
不到万不得已不要使用异常——开销太大
fera 发表于 2010-04-23 17:30



其实,设计良好的话,异常的开销可以忽略不计。
与带来的好处相比,还是可以接受的。

论坛徽章:
0
14 [报告]
发表于 2010-04-26 10:27 |只看该作者
我认为C++中的异常与错误是不同的概念,
我们通常在函数调用中,实施不变式的检查。不变式分为三类:前条件,后条件和不变式。前条件是指在函数调用之前,必须满足的逻辑条件,后条件是函数调用后必须满足的逻辑条件,不变式则是整个函数执行中都必须满足的条件。不变式既是前条件又是后条件。
前条件不满足为错误,前条件满足而后条件不满足才是异常,
如数组下标越界是前条件不满足,故仅为错误。
按照这样说,异常处理应与错误处理混合使用
具体见http://www.sf.org.cn/Article/base/200612/19694.html

论坛徽章:
0
15 [报告]
发表于 2010-04-27 18:09 |只看该作者
用异常的好处是在外围控制简单,并且有一些层次可以不写错误控制的代码。比如有层次 A->B->C->D ,假设D里可 ...
geel 发表于 2010-04-24 22:56

非常感谢,完全理解你所说的意思,以前的项目组,现在的项目组中大家都不用异常,感觉很奇怪,其实我觉得应该尽量用异常(除非性能真的很重要),c++的优点就是更加严格编程,异常正是体现了这点,迫使错误必须得被捕获和处理,这在企业软件开发中至为重要,因为企业关心的是软件的稳定性,性能倒是其次,一件事情慢一点关系不大,但不能错。
我自己把我的几个问题回答一下:

1:所有的异常都是程序抛出的,不论是我们自己的程序还是c/c++运行库。底层c函数如果用错误码返回,我们在封装的时候应该抛异常
2:正如你所说,在底层抛异常,在最上层捕获异常,中间层一般是组件层不管,相关的clean up 析构函数会处理的;
3:我们在抛异常的时候应该按某个功能逻辑抛,同一功能的异常可以统一处理,例如记错误日志,显示错误信息,回滚此功能逻辑;对于不同的功能逻辑,则抛不同的异常;至于怎么才算是同一个功能,要具体分析了。

总之,thank you.

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
16 [报告]
发表于 2010-04-27 21:45 |只看该作者
回复 10# geel

我是来顶10楼的

关键词: 项目组人员素质

论坛徽章:
0
17 [报告]
发表于 2010-04-28 03:57 |只看该作者
平时很少用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP