Ben*_*igt 15
观察偏见在这里工作.
C++代码的很大一部分用于系统编程和嵌入式系统.(毕竟,C++只是应用程序编程的众多选项之一,而且许多替代方案都具有更高级的RAD环境,但在系统工作中,它通常是编译器可用的最高级语言,大幅度提高).大多数嵌入式系统以及大量系统开发工作都有限制条件来排除异常.
如果由于您的关注,您倾向于搜索这种代码,那么您看到的C++代码完全有可能不会使用异常.
这并不意味着没有使用异常的C++代码 - 有很多,有很多.它可能不会出现在旨在解决您感兴趣的问题的代码中.
Pét*_*rök 10
异常是对语言的一个相当晚的补充,所以我相信许多C++开发人员从未学会正确使用它们,并且使用传统(C风格)错误处理技术可能会感到更放松.
我个人认为它们在处理构造函数失败方面是不可或缺的(这是它们最终被添加到C++中的最重要原因),但它们还需要正确使用其他高级(YMMV)技术(如RAII或智能指针)以避免资源泄漏.
小智 7
我已经用C++编程开启和关闭了大约5年,为什么我从未见过除例子以外的例外用例?
我对此非常好奇.自1996年以来,我对此非常好奇.有时我认为在1996年,C++ Exception Handling彻底改变了我编写软件的方式.我记得我正在阅读有关C++异常处理的内容,我立即明白其含义.几分钟之内,我正在测试发生了什么,如果从构造函数抛出异常.用于UNIX的编译器还没有为C++异常处理做好准备,直到G ++ 3.0我认为(这是什么?).调用析构函数是为了没有构造的内存位置(在堆栈上)(如果抛出了一些异常).没有为成功的构造对象(在堆栈上)调用析构函数(如果抛出了某些异常).如果使用new创建的对象从构造函数中引发异常,则不会调用delete.适用于Windows和OS/2的编译器已于1996/1997准备就绪.他们工作.我记得Borland C++ for OS/2和IBM CSet2以及Windows Visual C++.
最后有一种方法可以中止对象的构造.最后,可以在构造函数中分配一个对象,并依赖于在其他构造函数中成功构造此对象.不知怎的,我发现了所有的规则.不是来自书本!多年后出版了书籍,声称C++异常处理是一种很好的方法来捕获数组越界错误或其他我从未停止使用断言的问题.最后,有一种简单的方法可以为调用者提供有关某些错误的复杂信息,而无需依赖stderr.最后,人们不需要调试一些复杂的软件来找出失败的东西.
我不能认真对待那些没有使用C++异常处理的人.无法检查每一个错误的电话.如果不使用C++异常处理,就不可能达到相同的软件质量水平.为什么这样的人仍然被雇用?为什么还有平台,它们不提供C++异常处理.我永远不会考虑为这样的平台编写软件,就像我拒绝在汇编代码中编写复杂的应用程序一样.
我想到了几个原因:
main())。| 归档时间: |
|
| 查看次数: |
2334 次 |
| 最近记录: |