免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
61 [报告]
发表于 2010-02-05 12:28 |只看该作者
小屁孩,不懂了吧~~

*((int *)0)=0 就会异常~~

或是
const int i=5;
i=6;也可能异常(有 ...
folklore 发表于 2010-02-04 19:33



   我觉得这种不算异常吧。异常是指throw出来的,上面这几种异常怎么捕捉?
   try
   {
      *((int *)0)=0;//或者 int *p; *p = 100;
   }
   catch(...)
   {
       xxx
    }
这样行不通吧?

论坛徽章:
0
62 [报告]
发表于 2010-02-05 12:31 |只看该作者
我觉得这是两个层面的问题,上面的情况,是操作系统管理的,会产生一个异常,windows不知道怎么处理,在linux是用singal来处理的。这个不是c++层面的问题吧。

论坛徽章:
0
63 [报告]
发表于 2010-02-05 14:23 |只看该作者
C++里面赋值会导致拷贝构造之类的函数倍调用  然后这里面可能还有更多的拷贝构造或者其他的函数被调用  未必能保证没异常。
另外也可能里面有new之类的失败抛异常的函数。
C++背后的机制太多 即使用了好几年还是不清不楚 用的时候心里的不安和用户报告BUG时候的无助远多过用C写代码

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



    Microsoft的内核大牛在谈到内核的问题时,有一个关于C++的言论:

将 C++ 编译器用于内核模式代码
请务必牢记,编译器生成的正确的目标代码未必是您期望的代码,其组织方式也未必是您所期望的。事实总是如此,但是 C++ 比 C 更可能发生这种问题。您必须检查目标代码,以确保与您的期望一致,或者至少能在内核环境中正确工作。

目前可用的 C++ 编译器的输出不能保证在所有平台和版本的内核模式都能工作。代码使用的 C++“高级”特性越多,就越可能出现互操作性问题。

论坛徽章:
0
65 [报告]
发表于 2010-02-05 18:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
66 [报告]
发表于 2010-02-05 21:06 |只看该作者
好多高手啊, 值得学习的帖子。

论坛徽章:
0
67 [报告]
发表于 2010-02-06 01:17 |只看该作者
如果是正常的逻辑,像java中读流结束的情况也要用异常,我觉得很不爽,用返回值更清晰;如果是不应该发生的错误,我觉得用断言更好,就像new抛出的异常有用吗?系统内存分配都不正常了,程序还跑着干嘛?面条代码很危险。
  线性的代码最好理解,也最符合人的思维,异常则是非线性的,这是代码大全的观点。错误处理用断言是最适合的,当然生产环境可以做适当的让步。如果养成出了错就随便抛个异常,或者返回个errcode, 而不管调用自己的代码是否处理的习惯,这是推卸责任的方法,对整体代码质量没有好处。java中的异常还好,至少它一个函数抛了异常无论抛到那一层都是必须有处理的,当然,往往最后的处理就是catch(Exception e){},也就是说无论你抛的异常多么具体都没用。
  异常对代码质量的提高没有作用。在生产环境可以做适当的冗错处理,但切忌面条代码。

论坛徽章:
0
68 [报告]
发表于 2010-02-06 01:26 |只看该作者
麻烦不是很精通C++的人不要乱回复,误人子弟不好的!
对于服务端程序因为要总处于“正常状态”下,
因此还 ...
stephen_du 发表于 2010-02-05 18:17


我很支持“所有可能的错误开发的程序员要心知肚明!”这句。异常不是用来为程序员的失误擦屁股的,更不是包治百病的灵丹妙药。如果做到了这一点,异常用于不用都是无关紧要的了,有点鸡肋的味道。

论坛徽章:
0
69 [报告]
发表于 2010-02-06 16:57 |只看该作者
瞻仰C++牛人滑铁卢

论坛徽章:
0
70 [报告]
发表于 2010-02-07 01:20 |只看该作者
我很支持“所有可能的错误开发的程序员要心知肚明!”这句。异常不是用来为程序员的失误擦屁股的,更不 ...
冻惨鸟 发表于 2010-02-06 01:26

我也支持这个看法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP