设为首页 加入收藏

TOP

15.3.5 异常规范和C++11
2013-10-07 15:44:29 来源: 作者: 【 】 浏览:77
Tags:15.3.5 异常 规范

15.3.5  异常规范和C++(www.cppentry.com)11

有时候,一种理念看似有前途,但实际的使用效果并不好。一个这样的例子是异常规范(exception specification),这是C++(www.cppentry.com)98新增的一项功能,但C++(www.cppentry.com)11却将其摒弃了。这意味着C++(www.cppentry.com)11仍然处于标准之中,但以后可能会从标准中剔除,因此不建议您使用它。

然而,忽视异常规范前,您至少应该知道它是什么样的,如下所示:

 

其中的throw( )部分就是异常规范,它可能出现在函数原型和函数定义中,可包含类型列表,也可不包含。

异常规范的作用之一是,告诉用户可能需要使用try块。然而,这项工作也可使用注释轻松地完成。异常规范的另一个作用是,让编译器添加执行运行阶段检查的代码,检查是否违反了异常规范。这很难检查。例如,marm( )可能不会引发异常,但它可能调用一个函数,而这个函数调用的另一个函数引发了异常。另外,您给函数编写代码时它不会引发异常,但库更新后它却会引发异常。总之,编程(www.cppentry.com)社区(尤其是尽力编写安全代码的开发人员)达成的一致意见是,最好不要使用这项功能。而C++(www.cppentry.com)11也建议您忽略异常规范。

然而,C++(www.cppentry.com)11确实支持一种特殊的异常规范:您可使用新增的关键字noexcept指出函数不会引发异常:

 

有关这种异常规范是否必要和有用存在一些争议,有些人认为最好不要使用它(至少在大多数情况下如此);而有些人认为引入这个新关键字很有必要,理由是知道函数不会引发异常有助于编译器优化代码。通过使用这个关键字,编写函数的程序员相当于做出了承诺。

还有运算符noexcept( ),它判断其操作数是否会引发异常,详情请参阅附录E。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇15.3.9 异常、类和继承(3) 下一篇15.2.1 嵌套类和访问权限

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何利用Python做数 (2025-12-24 23:48:36)
·如何使用python进行 (2025-12-24 23:48:34)
·python 爬虫入门该怎 (2025-12-24 23:48:31)
·Java 实现多个大文件 (2025-12-24 23:22:00)
·Java多线程编程在工 (2025-12-24 23:21:56)