免费注册 查看新帖 |

Chinaunix

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

[C++] 有人会在程序中try catch吗? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-08-13 17:22 |只看该作者
指的是内存溢出吗?貌似不在构造、析构函数中throw就没什么问题吧

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
32 [报告]
发表于 2008-08-15 08:56 |只看该作者
你们老大的意思是:
如果你们不懂异常,还是不要乱用,自己把异常都捕获了,免得拖累别人

论坛徽章:
0
33 [报告]
发表于 2008-08-15 09:04 |只看该作者
在不允许程序经常挂掉的系统中,还是很有用的,

论坛徽章:
0
34 [报告]
发表于 2008-08-15 09:46 |只看该作者

回复 #33 ua 的帖子

在构造、析构函数中throw一般就不会出现内存溢出

论坛徽章:
0
35 [报告]
发表于 2008-08-15 10:09 |只看该作者
没有看明白,这个帖子讨论的是抛出异常,还是捕捉异常。
如果是捕捉异常,那么几乎是肯定的,除非你根本没有使用任何的类库,都是自己从API做起,或者你用了类库,但是这些类库不使用抛出异常的方式。
如果是抛出异常,那么确实,使用C++不需要使用C++的全部特性,但是异常处理作为一个在语言级别的特性,如果不是有显著的效益,C++委员会是不会允许他进入的。至于说会引起内存溢出等等,不排除会有个别实现会有这种问题,但是如果是普遍问题的话,这个特性早都废除了。

论坛徽章:
0
36 [报告]
发表于 2008-08-15 10:32 |只看该作者
原帖由 shaver 于 2008-8-15 10:09 发表
没有看明白,这个帖子讨论的是抛出异常,还是捕捉异常。
如果是捕捉异常,那么几乎是肯定的,除非你根本没有使用任何的类库,都是自己从API做起,或者你用了类库,但是这些类库不使用抛出异常的方式。
如果是 ...



在C++里面,为了保证兼容性,已有特性都不会移除的。即使这个特性再烂,也不会移除:比如多重继承。

C++委员会的策略是:只要可能就拼命往C++里面加各种特性,至于用不用这种特性则由程序员来决定。

结果是C++里面80%的特性都是大多数程序员不需要的。程序员有责任约束自己,不要使用对项目有害的C++语言特性。

论坛徽章:
0
37 [报告]
发表于 2008-08-15 16:21 |只看该作者
说说我觉得使用异常处理的优点:
1、程序更自然,不需要占用函数的值域。不使用的话,就要在返回值中做标记;没有标记的区域,就只好改变函数的声明。比如 int some_func()这样的函数,如果要标志处理过程中的异常,可能需要改写成 int some_func(xxx, int *value)。
2、异常是对象,而返回值传递的是一些magic value。
3、异常可以有层次结构,所以可以catch ENetError。否则只有ret == E_NET1_ERROR || ret == E_NET2_ERROR。

论坛徽章:
1
2017金鸡报晓
日期:2017-01-10 15:19:56
38 [报告]
发表于 2008-08-15 16:28 |只看该作者
原帖由 wwwsq 于 2008-8-11 09:01 发表
我们公司的原则是从不让异常抛出来,万一异常要是出来了就让程序死掉,就像访问空指针程序会死一样。

不知道各位同仁一般是怎么处理C++异常的?


这个贴上次发了吧,莫非你是个MJ?

论坛徽章:
0
39 [报告]
发表于 2008-08-15 21:25 |只看该作者
呵呵,如果不让我在代码里面抛异常,估计我会疯掉的

论坛徽章:
0
40 [报告]
发表于 2008-08-15 22:01 |只看该作者
看什么系统了,我觉得windows下的结构化异常处理就很好,而且有些C++的系统,比如VC,在C++标准中的异常处理就包含了这个。
要有语言系统和操作系统的双重支持就能做到相当好,比如在windows下即使反问了NULL指针,也能作为异常而俘获,也就是能继续处理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP