当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>More effective C++:谨慎利用异通例格</b>[VC/C++编程]

赞助商链接



  本文“<b>More effective C++:谨慎利用异通例格</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

毫无疑问,异通例格是一个惹人注目的特点.它使得代码更简单理解,因为它明确地描写了一个函数可以抛出什么样的非常.但是它不只是一个风趣的注释.编译器在编译时有时可以检测到异通例格的不一致.并且假如一个函数抛出一个不在异通例格范围里的非常,系统在运行时可以检测出这个错误,然后一个特别函数unexpected将被自动地调用.异通例格既可以做为一个指导性文档同时也是非常利用的强迫约束机制,它仿佛有着很诱人的外表.

不过在普通情形下,美貌只是一层皮,外表的漂亮并不代表其内涵的本质.函数unexpected缺省的行为是调用函数terminate,而terminate缺省的行为是调用函数abort,所以一个违反异通例格的程序其缺省的行为就是halt(终止运行).在激活的stack frame中的部分变量没有被释放,因为abort在关闭程序时不举行这样的排除操作.对异通例格的触犯变成了一场并不该该发生的灾难.

不幸的是,我们很简单就可以够编写出招致发生这种灾难的函数.编译器仅仅部份地检测非常的利用能否与异通例格保持一致.一个函数调用了另一个函数,并且后者大概抛出一个违反前者异通例格的非常,(A函数调用B函数,因为B函数大概抛出一个不在A函数异通例格之内的非常,所以这个函数调用就违反了A函数的异通例格 译者注)编译器不对此种情形举行检测,并且语言尺度也禁止它们回绝这种调用方法(固然可以显示告诫信息).

比方函数f1没有声明异通例格,这样的函数便可以抛出肆意种类的非常:

extern void f1(); // 可以抛出肆意的非常

假定有一个函数f2通过它的异通例格来声明其只能抛出int范例的非常:

void f2() throw(int);

f2调用f1是非常合理的,即便f1大概抛出一个违反f2异通例格的非常:


  以上是“<b>More effective C++:谨慎利用异通例格</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .