免费注册 查看新帖 |

Chinaunix

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

C++写后台程序时,是否不提倡try...catch... [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-02-02 17:03 |只看该作者
这是一个比较深入的问题
初学者洗耳恭听

论坛徽章:
39
2017金鸡报晓
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
22 [报告]
发表于 2010-02-02 17:53 |只看该作者
因该提倡永远不用try/catch, 这东西是给懒人准备的.

论坛徽章:
0
23 [报告]
发表于 2010-02-02 18:57 |只看该作者

论坛徽章:
0
24 [报告]
发表于 2010-02-03 00:17 |只看该作者
个人观点

try catch和errno
只是错误的处理方式而已。

关键是try catch特别容易出错,你很难分清楚在调用别的函数时,到底会抛出什么异常,恰好你只是处理了一部分异常。
这就是异常在c++里面的问题。
在java里面,每个方法定义时,都很清晰地指明有什么未处理的异常会抛出,从而使调用者避免异常未处理的风险。

论坛徽章:
0
25 [报告]
发表于 2010-02-03 00:20 |只看该作者

论坛徽章:
0
26 [报告]
发表于 2010-02-03 00:21 |只看该作者
本帖最后由 alphayeah 于 2010-02-03 00:23 编辑
try...catch...似乎对性能有些影响,可能有不同的实现方式

我觉得要么不用,要么全用
hellioncu 发表于 2010-02-02 11:15


这就是问题所在,你只要用c++,用与不用,不是由你决定。
是由其它代码的错误处理机制决定的。

论坛徽章:
0
27 [报告]
发表于 2010-02-03 09:40 |只看该作者
本帖最后由 doofy 于 2010-02-03 09:45 编辑

昨天看到这个帖子 晚上特意看了一下  primer的作者说:
“什么时候使用异常在设计上是一件很难的事”

同时交代了一种常用的情景:
实现者和调用者是两个不同的模块,是不同的人写的,典型就是各种“基础库”

所以我觉得平时编程调用库函数的时候try-catch 一下,自己throw就不必要了。

而且问了其他软件公司的人,貌似他们的项目中也很少使用异常机制,仅在调用一些容易抛出异常的库(如io)时try-catch

看来是高级特性 非必须

论坛徽章:
0
28 [报告]
发表于 2010-02-03 09:50 |只看该作者
某人告诉我正常的C++语句也会产生异常的。 说是自己以前的经验。  我当时很惊讶,现在依然迷惑不解.
srdgame 发表于 2010-02-02 11:39



    class E{
public:
    E(){throw XXX;}
};

int main()
{
    E e;
    return 0;
}

论坛徽章:
0
29 [报告]
发表于 2010-02-03 09:59 |只看该作者
如果不用new可以不使用异常。
问题如果一次都不用new,那你还用c++干什么?还是换一门语言好了。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
30 [报告]
发表于 2010-02-03 10:05 |只看该作者
如果不用new可以不使用异常。
问题如果一次都不用new,那你还用c++干什么?还是换一门语言好了。
UnixStudier 发表于 2010-02-03 09:59



   
可以用 new(std::nothrow) 呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP