c++ primer plus 第15章友,异常和其他:异常,15.3.5 异常规范和 C++11

c++ primer plus 第15章友,异常和其他:异常,15.3.5 异常规范和 C++11

15.3.5 异常规范和 C++11

文章目录

  • c++ primer plus 第15章友,异常和其他:异常,15.3.5 异常规范和 C++11
  • 15.3.5 异常规范和 C++11


15.3.5 异常规范和 C++11

有时候,一种理念看似有前途,但实际的使用效果并不好。一个这样的例子是异常规范(exceptionspecification),这是 C++98 新增的一项功能,但 C++11却将其摒弃了。这意味着 C++11仍然处于标准之中,但以后可能会从标准中剔除,因此不建议您使用它。
然而,忽视异常规范前,您至少应该知道它是什么样的,如下所示:

double harm(double a)throw(bad thing); // may throw bad thing exception
double marm(double)throw();/doesn't throw an exception

其中的 throw()部分就是异常规范,它可能出现在函数原型和函数定义中,可包含类型列表,也可不包含异常规范的作用之一是,告诉用户可能需要使用try块。然而,这项工作也可使用注释轻松地完成。异常规范的另一个作用是,让编译器添加执行运行阶段检查的代码,检查是否违反了异常规范。这很难检查。例如,marm()可能不会引发异常,但它可能调用一个函数,而这个函数调用的另一个函数引发了异常。另外,您给函数编写代码时它不会引发异常,但库更新后它却会引发异常。总之,编程社区(其是尽力编写安全代码的开发人员)达成的一致意见是,最好不要使用这项功能。而 C++11也建议您忽略异常规范。然而,C++11确实支持一种特殊的异常规范:您可使用新增的关键字noexcept 指出函数不会引发异常:

double marm()noexcept;//marm()doesn't throw an exception

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/784359.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动感剧场设计师:打造流畅而生动的三维动画和特效

三维画图软件是设计领域必不可少的工具,它可以创建非常精确的三维模型,能够帮助设计师直观感受产品的外观,随时进行编辑和调整。与传统的三维画图软件相比,的三维画图软件无需进行安装步骤,节省时间又节省内存。本文将…

论文辅导 | 基于模态分解的Transformer-GRU联合电池健康状态估计

辅导文章 模型描述 提出一种基于变分模态分解(variational mode decomposition,VMD)与粒子群优化(particle swarm optimization,PSO)的变换神经网络(Transformer)和门控循环单元(gate recurrent unit,GRU)的联合方法。首先将锂电池容量信息通…

【大模型LLM面试合集】大语言模型基础_Word2Vec

Word2Vec 文章来源:Word2Vec详解 - 知乎 (zhihu.com) 1.Word2Vec概述 Word2Vec是google在2013年推出的一个NLP工具,它的特点是能够将单词转化为向量来表示,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。 …

运维系列.Nginx配置中的高级指令和流程控制

运维专题 Nginx配置中的高级指令和流程控制 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/…

李彦宏: 开源模型是智商税|马斯克: OpenAI 闭源不如叫 CloseAI

在 2024 年世界人工智能大会(WAIC 2024)上,百度创始人、董事长兼首席执行官李彦宏发表对开源模型的评价。 李彦宏认为:开源模型实际上是一种智商税,而闭源模型才是人工智能(AI)行业的未来。 马…

【时间复杂度的计算】

目录 一、时间复杂的的概念1、定义2、基本计算规则 二、单层循环时间复杂度计算公式三、双层循环时间复杂度计算公式四、多层循环时间复杂度计算公式1、法一:抽象为计算三维物体的体积2、法二:列式求和 一、时间复杂的的概念 1、定义 时间复杂度&#…

java 参数传递(尤其注意参数是对象的情况)

8大基本数据类型为 值传递 类和数组为 引用传递,传递的是地址 但是要注意虽然类是引用传递,但是要注意,调用方法是新开一个栈 因此如果进行p null或者 Person p new Person()等语句,要格外注意: 如果主函数再次输出…

C/C++内存分布

1.内存分布简略图 2.全局变量和静态变量的区别 (1)局部静态变量:存储在数据段中,局部静态变量的作用域在当前函数中,出了函数就不能使用该变量,但局部静态变量的生命周期是在整个程序间,局部静态变量要运行到这一行才…

贝叶斯估计(1):期末大乱炖

写在前面! 1 先验分布和后验分布 三种信息:总体信息、样本信息、先验信息 总体信息:“总体是正态分布”;样本信息:总体抽取的样本提供的信息,是最新鲜的信息;先验信息:在抽样之前就…

019-GeoGebra中级篇-GeoGebra的坐标系

GeoGebra作为一款强大的数学软件,支持多种坐标系的使用,包括但不限于:笛卡尔坐标系(Cartesian Coordinate System)、极坐标系(Polar Coordinate System)、参数坐标系(Parametric Coo…

第二证券股市知识:股票填权是怎么回事?利好还是利空?

1、股票填权的含义 股票填权是指在除权除息之后的一段时刻内,假设多数投资者看好该个股,股票的价格超过除权除息的基准价就叫做填权。上市公司假设能持续分红,就会向市场传递积极信号,招引更多投资者买入,越来越多的投…

Thingsboard 系列之通过 ESP8266+MQTT 模拟设备上报数据到平台

前置工作 Thingsboard平台ESP 8266 NodeMCU 开发板IDE: Arduino 或 VScode 均可 服务端具体对接流程 系统管理员账号通过 Thingsboard 控制面板创建租户等信息并以租户账号登录 实体 —> 设备维护具体设备信息 创建完成后通过管理凭据修改或直接复制访问令牌…

磁致伸缩液位计的应用领域

磁致伸缩液位计作为一种高精度、高稳定性的液位测量设备,在众多行业中都有着广泛的应用。接下来,我们将从多个角度详细探讨磁致伸缩液位计在不同领域的应用情况。 石油化工行业 在石油化工行业中,磁致伸缩液位计主要用于储罐、反应器和管道等…

太实用了吧?手把手教你华为eNSP模拟器桥接真实网络!

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 晚上好,我的网工朋友。 今天聊聊eNSP桥接正式网络,就是把eNSP桥接进真实的网络,利用我们的物理网卡通过实体路…

数学建模论文写作文档word

目录 1. 摘要写法1.1 确定题目与方法1.2 编写开头段落1.3 填写问题一1.4 重复步骤3填写其他问题1.5 编写结尾段落1.6 编写关键词 2. 问题重述2.1 问题背景2.2 问题提出 3. 问题分析4. 问题X模型的建立与求解5. 模型的分析5.1 灵敏度分析5.2 误差分析(主要用于预测类…

linux基础—目录和文件操作

1,列出目录和文件的详细信息 ls: ls -l ls -lt 2,认识文件 第一列 左边的一组排序中,第一个字符是文件的类型,后面9个字符是文件的权限。 第一个字符主要有3种情况: d表示目录、-表示文件,l表示链接 第…

【回溯算法经典题目解析】

1. 什么是回溯算法 回溯算法是⼀种经典的递归算法,通常用于解决组合问题、排列问题和搜索问题等。 回溯算法的基本思想:从一个初始状态开始,按照⼀定的规则向前搜索,当搜索到某个状态⽆法前进时,回退到前⼀个状态&am…

背包问题转换

如何转换成背包问题呢&#xff0c;我们可以把每个质数当成一个重量 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.h> using namespace std;#define int long long int record[1005]; void fun() {//record[2] 1;for (int i 2; i < 1000; i) {if (!record[…

JDBC和数据库连接池

1 JDBC概述 1.1 数据持久化 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持久化意味着将内存中的数据保存到硬盘上加以”固化”&#xff0c;而持久化的实现过程大多通过各种关系数…

鸿蒙语言基础类库:【@ohos.url (URL字符串解析)】

URL字符串解析 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入…