马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
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 中声明的:
- typedef void (*terminate handler)();
- terminate_handler set_terminate(terminate_handler f)throw();//C++98
- terminate_handler set_terminate (terminate_handler f)noexcept; //C++11
- void terminate();// C++98
- void terminate()noexcept;// C++11
复制代码 此中的 typedef使 terminatc_handlcr成为如许一种类
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |