C++ 异常机制分析.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C异常机制分析

C++ 异常机制分析 阅读目录  C++异常机制概述  throw 关键字  异常对象  catch 关键字  栈展开、RAII  异常机制与构造函数  异常机制与析构函数  noexcept 修饰符与noexcept 操作符  异常处理的性能分析 C++异常机制概述 异常处理是C++的一项语言机制,用于在程序中处理异常事件。异常事件在C++中表示为异 常对象。异常事件发生时,程序使用throw 关键字抛出异常表达式,抛出点称为异常出现点, 由操作系统为程序设置当前异常对象,然后执行程序的当前异常处理代码块,在包含了异常出 现点的最内层的try 块,依次匹配catch 语句中的异常对象(只进行类型匹配,catch 参数有 时在catch 语句中并不会使用到)。若匹配成功,则执行catch 块内的异常处理语句,然后接 着执行try...catch...块之后的代码。如果在当前的try...catch...块内找不到匹配该异常对 象的catch 语句,则由更外层的try...catch...块来处理该异常;如果当前函数内所有的 try...catch...块都不能匹配该异常,则递归回退到调用栈的上一层去处理该异常。如果一直退 到主函数main()都不能处理该异常,则调用系统函数terminate()终止程序。 一个最简单的try...catch...的例子如下所示。我们有个程序用来记班级学生考试成绩,考试成 绩分数的范围在0-100 之间,不在此范围内视为数据异常: int main () { int score=0; while (cin score) { try { if (score 100 || score 0) { throw score; } //将分数写入文件或进行其他操作 } catch (int score) { cerr 你输入的分数数值有问题,请重新输入!; continue; } } } throw 关键字 在上面这个示例中,throw 是个关键字,与抛出表达式构成了throw 语句。其语法为: throw 表达式; throw 语句必须包含在try 块中,也可以是被包含在调用栈的外层函数的try 块中,如: //示例代码:throw 包含在外层函数的try 块中 void registerScore (int score) { if (score 100 || score 0) throw score; //throw 语句被包含在外层main 的try 语句块中 //将分数写入文件或进行其他操作 } int main () { int score=0; while (cin score) { try { registerScore(score); } catch (int score) { cerr 你输入的分数数值有问题,请重新输入!; continue; } } } 执行throw 语句时,throw 表达式将作为对象被复制构造为一个新的对象,称为异常对象。异 常对象放在内存的特殊位置,该位置既不是栈也不是堆,在window 上是放在线程信息块TIB 中。这个构造出来的新对象与本级的try 所对应的catch 语句进行类型匹配,类型匹配的原则 在下面介绍。 在本例中,依据score 构造出来的对象类型为int,与catch(int score)匹配上,程序控制权 转交到catch 的语句块,进行异常处理代码的执行。如果在本函数内与catch 语句的类型匹配 不成功,则在调用栈的外层函数继续匹配,如此递归执行直到匹配上catch 语句,或者直到 main 函数都没匹配上而调用系统函数terminate()终止程序。 当执行一个throw 语句时,跟在th

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档