c++ primer plus 第15章友,非常和其他 15.3.10 非常何时会迷失方向

[复制链接]
发表于 2026-2-27 07:06:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
c++ primer plus 第15章友,非常和其他 15.3.10 非常何时会迷失方向

15.3.10 非常何时会迷失方向

  
<hr> 15.3.10 非常何时会迷失方向

非常被引发后,在两种环境下,会导致题目。起首,假如它是在带非通例范的函数中引发的,则必须与规范列表中的某种非常匹配(在继续条理布局中,类范例与这个类及其派生类的对象匹配),否则称为不测非常(unexpected exception)。在默认环境下,这将导致步伐非常停止(固然 C++11摒弃了非通例范,但仍支持它,且有些现有的代码使用了它)。假如非常不是在函数中引发的(大概函数没有非通例范),则必须捕获它。假如没被捕获(在没有ty块或没有匹配的 catch块时,将出现这种环境),则非常被称为未捕获非常(umcaughtcxccption)。在默认环境下,这将导致步伐非常停止。然而,可以修改步伐对不测非常和未捕获非常的反应。下面来看怎样修改,先从未捕获非常开始。
未捕获非常不会导致步伐立即非常停止。相反,步伐将起首调用函数temminate()。在默认环境下,terminate()调用 abort()函数。可以指定 terminate()应调用的函数(而不是 abort())来修改 terminate( )的这种运动。为此,可调用 set_terminate()函数。set_terminate()和terminate()都是在头文件 exception 中声明的:
  1. typedef void (*terminate handler)();
  2. terminate_handler set_terminate(terminate_handler f)throw();//C++98
  3. terminate_handler set_terminate (terminate_handler f)noexcept; //C++11
  4. void terminate();// C++98
  5. void terminate()noexcept;// C++11
复制代码
此中的 typedef使 terminatc_handlcr成为如许一种类

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表