码迷,mamicode.com
首页 > 编程语言 > 详细

《C++ Primer》读书记录五

时间:2015-06-09 23:36:03      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

2015年6月9日  星期二 22:09

第五部分  高级主题 第17章~第18章

第17章 用于大型程序的工具

  • 异常处理,C++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信
    • 抛出类类型的异常,异常是通过throw对象而引发raise的。该对象的类型决定应该激活那个处理代码。被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位最近的那个。抛出指针通常是个坏主意,抛出指针要求在对于处理代码存在的任意地方存在指针所指向的对象
    • 栈展开,抛出异常后,暂停当前函数的操作,开始由近及远地查找匹配的catch子句,这个过程称为栈展开stack unwinding。栈展开期间,释放局部对象所用的内存并运行类类型局部对象的i析构函数。析构函数应该从不抛出异常
    • 捕获异常,带有因继承而相关的类型的多个catch子句,必须从最低派生类型到最高派生类型
    • 重新抛出,单个catch不能完全处理一个异常,在进行一些校正行动后,可以通过重新抛出rethrow将异常递给函数调用链中更上层的函数,重新抛出是后面不跟类型或表达式的一个throw,空throw语句将重新抛出异常
    • 捕获所有异常的处理代码,catch-all.如果catch(……)与其他catch子句结合使用,必须最后一个。否则,任何跟在它后面的catch子句都不能被匹配
    • //match any exception that might be thrown
      cathc(......){
        //place our code here
      }
    • 函数测试块与构造函数
    • 异常类层次技术分享  

《C++ Primer》读书记录五

标签:

原文地址:http://www.cnblogs.com/sherPur/p/4564804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!