接下来的是more effective c++ 11至20条款:11.禁止异常信息(exceptions)传递到析构函数外。析构函数的调用情况可能有两种:(1)对象正常销毁 (2)异常传播过程中的栈展开机制-销毁。如果在析构函数内抛出异常,它不会被析构函数捕获,它会传播到析构函数的调用端,如果调用端...
分类:
编程语言 时间:
2014-12-18 21:59:30
阅读次数:
219
本文讲关于C++的异常的所有东西:
绝对不让异常逃离析构函数
阻止exception逃离析构函数,主要是两个原因:
1 防止在异常处理过程中的栈展开行为时,将调用terminate函数。程序将会结束,有时候其实错误并没有那么严重。
[插入: 什么时候会调用terminate函数呢?]
[回答 : By default, the terminate handler call...
分类:
编程语言 时间:
2014-10-10 23:57:54
阅读次数:
302
用于大型程序的工具--异常处理引言: C++语言包含的一些特征在问题比较复杂,非个人所能管理时最为有用。如:异常处理、命名空间和多重继承。 相对于小的程序员团队所能开发的系统需求而言,大规模编程[往往涉及数千万行代码]对程序设计语言的要求更高。大规模应用程序往往具有下列特殊要求: 1.更严格的正常运转时间以及更健壮的错误检测和错误处理。错误处理经常必须跨越独立开发的多个子系统进行[异常处理]。 2...
分类:
编程语言 时间:
2014-06-04 23:00:07
阅读次数:
403
1. 异常处理
异常以类似于将实参传递给函数的方式抛出和捕获。异常可以是可传给非引用实参的任意实参的类型,这意味着必须能够复制该类型的对象。
当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异常对象的类型。
抛出指针通常是个坏主意。
栈展开:沿着嵌套函数调用链继续向上,直到为异常找到一个catch子句。
栈展开期间,释放局部对象所用的内存并运行类类...
分类:
编程语言 时间:
2014-05-09 06:17:46
阅读次数:
528