C++标准库异常类

2023-11-05

C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下:

namespace std {

         class exception {

         public:

                   exception() throw();   //不抛出任何异常

                   exception(const exception& e) throw();

                   exception& operator= (const exception& e) throw();

                   virtual ~exception() throw)();

                   virtual const char* what() const throw(); //返回异常的描述信息

         };

}

除了exception类,C++还提供了一些类,用于报告程序不正常的情况,在这些预定义的类中反映的错误模型中,主要包含逻辑错误和运行时错误两大类。

逻辑错误主要包括invalid_argument, out_of_range, length_error, domain_error。当函数接收到无效的实参,会抛出invaild_argument异常,如果函数接收到超出期望范围的实参,会抛出out_of_range异常,等等。

namespace std {

         class logic_error: public exception {

         public:

                   explicit logic_error(const string &what_arg);

         };

         class invalid_argument: public logic_error {

         public:

                   explicit invalid_argument(const string &what_arg);

};

class out_of_range: public logic_error {

         public:

                   explicit out_of_range(const string &what_arg);

};

class length_error: public logic_error {

         public:

                   explicit length_error(const string &what_arg);

};

class domain_error: public logic_error {

         public:

                   explicit domain_error(const string &what_arg);

};

}

运行时错误由程序域之外的事件引发,只有在运行时才能检测,主要包括range_error, overflow_error, underflow_error。函数可以通过抛出range_eroor报告算术运算中的范围错误,通过抛出overflow_error报告溢出错误。

namespace std {

         class runtime_error: public exception {

         public:

                   explicit runtime_error(const string &what_arg);

         };

         class range_error: public runtime_error {

         public:

                   explicit range_error(const string &what_arg);

};

class overflow_error: public runtime_error {

         public:

                   explicit overflow_error(const string &what_arg);

};

class underflow_error: public runtime_error {

         public:

                   explicit underflow_error(const string &what_arg);

};

}

另外,在new头文件中定义了bad_alloc异常,exception也是bad_alloc的基类,用于报告new操作符不能正确分配内存的情形。当dynamic_cast失败时,程序会抛出bad_cast异常类,其也继承自exception类。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++标准库异常类 的相关文章

  • C#中unsafe的使用

    1 unsafe在C 程序中的使用场合 实时应用 采用指针来提高性能 引用非 net DLL提供的如C 编写的外部函数 需要指针来传递该函数 调试 用以检测程序在运行过程中的内存使用状况 2 使用unsafe的利弊 好处是 性能和灵活性提高
  • 范围for语句

    C 新标准提供的范围for语句 这种语句遍历给定序列中个元素并对序列中每一个值执行某种操作 其语法形式是 for declaration expression statement 其中 expression 部分是一个对象 用于表示一个序列
  • 调用拷贝构造函数的几种情况(附面试题)

    1 深拷贝和浅拷贝 拷贝构造函数的使用 有时候需要自己定义拷贝构造函数 以避免浅拷贝问题 在什么情况下需要用户自己定义拷贝构造函数 一般情况下 当类中成员有指针变量 类中有动态内存分配时常常需要用户自己定义拷贝构造函数 在什么情况下系统会调
  • C++ 中的虚函数及虚函数表

    C 中的虚函数及虚函数表 一 虚函数及虚函数表的定义 二 虚函数表指针和虚函数表的创建时机 三 虚函数实现多态的原理 一 虚函数及虚函数表的定义 虚函数 虚函数就是在基类中定义一个未实现的函数名 使用虚函数的核心目的就是通过基类访问派生类定
  • 五. python面向对象(多态 和metaclass=abc.ABCMeta)

    一 多态 多肽 一种事物的多种形态 叫多肽 例如 动物 animal 猫 狗 animal py 文件 动物类 都有名字这个属性 和吃这个方法 class Animal object def init self name self name
  • 编写递归算法,计算二叉树叶子结点的数目。

    编写递归算法 计算二叉树叶子结点的数目 编写递归算法 计算二叉树叶子结点的数目 include stdio h 包含 getchar scanf printf include malloc h malloc 动态申请空间 函数 二叉树 结点
  • 解决“17: 错误:程序中有游离的‘\240’,\302’

    参考链接 https blog csdn net asuphy article details 54602426 执行如下命令即可 sed i s o240 o302 g dy haikang test cpp
  • 无法打开源文件<sys/time.h>,但是用time.h编译就会出错,缺少gettimeofday()

    因为sys time h是uinx系统下的库文件 而现在使用的平台是在windows 由于未指明程序运行的系统 导致找不到对应的头文件 需要重新实现gettimeofday 函数 define WIN32 include
  • 如何学好C语言的数据结构与算法?

    C语言的数据结构与算法 难就难在链表 学会了链表 可能后面就一点都不难了 书籍推荐 数据结构与算法分析 C语言描述版 要深入学习的话可以选择这本书 因为针对链表的讲解是比较详细的 所以可以很快理解链表 跟着书上一点点实现基本操作 增删改查
  • LeetCode题目笔记——17.19消失的两个数字

    文章目录 题目描述 题目难度 困难 方法一 暴力 代码 代码优化 方法二 数学方法 代码 总结 题目描述 题目直达 题目难度 困难 方法一 暴力 虽然题目说你能在 O N 时间内只用 O 1 的空间找到它们吗 但是也没有限制我们不能用暴力
  • 手把手教你如何写一个三子棋/N子棋的小游戏

    这里写目录标题 第一步 游戏进入界面 第二步 初始化棋盘 第三步 打印棋盘 第四步 玩家和电脑下棋 第五步 判断输赢 三子棋或者N子棋怎么写 让我们先来玩一把 再来看看怎么写 程序运行界面 1为玩游戏 2为清屏 0为退出游戏 我们选1 然后
  • C++:指向类的成员的指针

    引 想必接触过C的朋友们对C语言中指针的概念已经有了深入的了解 如果初步进行了解的朋友可以看一下 C语言基础学习笔记 指针展开来讲的基本知识点包括 指针的概念 指针的定义和初始化及简单使用 指针函数和函数指针 有关指针函数和函数指针的内容上
  • Public Private Protect Inheritance and access specifiers

    In the previous lessons on inheritance we ve been making all of our data members public in order to simplify the example
  • stat 函数解析

    stat 函数的简单使用 stat 函数是用来获取文件的各种属性的一个linux下的常用API函数 函数原型为int stat const char path struct stat buf stat定义如下 struct stat dev
  • enable_shared_from_this使用介绍

    文章目录 enable shared from this定义 使用场合 源码实现 注意 enable shared from this定义 定义于头文件 template lt class T gt class enable shared
  • Java反序列化漏洞-CC1利用链分析

    文章目录 一 前置知识 1 反射 2 Commons Collections是什么 3 环境准备 二 分析利用链 1 Transform
  • C/C++编程:令人印象深刻的高级技巧案例

    C C 编程语言在软件开发领域有着悠久的历史 由于其高效 灵活和底层访问能力 至今仍然被广泛应用 本文将介绍一些在C C 编程中令人印象深刻的高级技巧 帮助读者提升编程水平 更加高效地使用这两种强大的编程语言 一 指针运算与内存管理 C C
  • C/C++编程中的算法实现技巧与案例分析

    C C 编程语言因其高效 灵活和底层的特性 被广大开发者用于实现各种复杂算法 本文将通过10个具体的算法案例 详细探讨C C 在算法实现中的技巧和应用 一 冒泡排序 Bubble Sort 冒泡排序 Bubble Sort 是一种简单的排序
  • C 语言运算符详解

    C 语言中的运算符 运算符用于对变量和值进行操作 在下面的示例中 我们使用 运算符将两个值相加 int myNum 100 50 虽然 运算符通常用于将两个值相加 就像上面的示例一样 它还可以用于将变量和值相加 或者将变量和另一个变量相加
  • C 语言文件读取全指南:打开、读取、逐行输出

    C 语言中的文件读取 要从文件读取 可以使用 r 模式 FILE fptr 以读取模式打开文件 fptr fopen filename txt r 这将使 filename txt 打开以进行读取 在 C 中读取文件需要一点工作 坚持住 我

随机推荐

  • 区块链+边缘计算 技术白皮书

    近日 中国移动5G联合创新中心与中兴通讯 区块链技术与数据安全工业和信息化部重点实验室 北京大学新一代信息技术研究院合作 共同发布了 区块链 边缘计算白皮书 白皮书聚焦于区块链与边缘计算技术和应用的结合点 探索二者结合产生的相互赋能 相互促
  • 深入JVM - JIT分层编译技术与日志详解

    深入JVM JIT分层编译技术与日志详解 文章目录 深入JVM JIT分层编译技术与日志详解 1 背景简介 2 JIT 编译器 2 1 客户端版本的编译器 C1 2 2 服务端版本的编译器 C2 2 3 Graal JIT 编译器 3 分层
  • yocto配置好eclipse之后编译多线程配置

    在yocto项目中配置好eclipse的开发环境 如何配置eclipse开发出多线程程序 普通的eclipse程序只需要在Properties gt C C Build gt Settings gt Tool Settings gt GCC
  • sublime text 3 扩展插件SideBarEnhancements用法教程

    SideBarEnhancements本是增强侧边栏的插件 这里将教大家如何用来做sublime text 3浏览器预览插件 并可自定义浏览器预览的快捷键 第一步 安装此插件 在sublime里面ctrl shift p install p
  • springboot-静态资源目录的配置

    一 通过配置文件配置 配置节点 spring web resources static locations值为要配置的静态资源存放目录如 spring web resources static locations classpath tes
  • IP包头结构定义以及结构体iphdr分析

    Linux linux 可以使用 http blog csdn net dreamintheworld article details 52096675 中的例程来实践通讯过程 来看一下IP包 IP头结构的定义 包格式解析如图 数据对应 对
  • word中添加Mathtype公式行间距改变问题

    在mathtype中编辑任何一个公式 将字体调整好 然后在公式编辑窗口中点 Preference Save to file 将设置保存为一个文件 文件名任取 关闭公式编辑窗口 退回到Word窗口 然后在Mathtype菜单中点 Format
  • xrdp无法启动

    xrdp突然无法启动l systemctl start xrdp A dependency job for xrdp service failed See journalctl xe for details 查看日志信息 journalct
  • 分享25个适合上班族的副业路子

    你是否也曾经在为每个月的工资发愁 你是否想过做点副业来增加收入 现在很多上班族的工资 已经难以满足他们的生活需求了 很多人开始尝试通过副业来增加收入 那么上班族要如何寻找适合自己的副业呢 下面就给大家分享25个适合上班族的副业赚钱路子 或许
  • 密码学加密模式分类

    目录 电子密码本模式 Electronic Codebook ECB 密码分组链接模式 Cipher Block Chaining CBC 密文反馈模式 Cipher Feedback CFB 输出反馈模式 Output Feedback
  • RepBaseRepeatMaskerEdition下载

    开源的生物信息世界居然有这么个需要注册才能下载的工具 开源世界不是怎么方便怎么来吗 这个注册真的麻烦 这里上传了一个可以使用的版本 RepBaseRepeatMaskerEdition 20170127 tar gz 想转成fasta可以用
  • 程序员财富自由之路 自媒体篇

    疫情期间 很多人的收入多多少少都受到了影响 当然 有的人坐吃山空 也有的人收入翻倍 我仔细观察了一下这些收入翻倍的人 发现他们基本都离不开三个字 哪三个字 就是自媒体 自媒体是什么 自媒体是指以内容为中心 个人创作者以网络的形式进行内容传播
  • Linux文件下I/O基础详解

    视频地址 华清远见 https www bilibili com video BV1dz411B7vj p 1 文件基础 一组相关数据的有序集合 文件类型 常规文件 r 二进制文件 ASCII码文件 目录文件 d 字符设备文件 c 块设备文
  • Python->进程-线程->TCP服务器客户端-服务端->返回固定数据的静态web服务器-学习

    作者 芝士小熊饼干 系列专栏 Python 坚持天数 12天 获取进程id和进程的父id 进程名 导入包 import multiprocessing import time import os 创建任务 def task1 print f
  • Django-admin录入中文错误:Incorrect string value

    在Django自带后台中经常会出现编码错误 Incorrect string value xE7 xAE x80 xE5 x8D x95 for column message at row 1 需要修改admin表的中的编码 才能保证数据正
  • Rust- FFI (Foreign Function Interface)

    Foreign Function Interface FFI is a mechanism that allows code written in one language to call code written in another l
  • 手写ArrayStack底层 实现代码

    一 接口的定义 package p1 接口 public interface Stack
  • 华为OD机试真题B卷 Java 实现【统计字符】,附详细解题思路

    一 题目描述 输入一行字符 分别统计出包含英文字母 空格 数字和其它字符的个数 数据范围 输入的字符串长度满足 1 le n le 1000 1 n 1000 二 输入描述 输入一行字符串 可以有空格 三 输出描述 统计其中英文字符 空格字
  • ECharts画动态仪表盘+柱状图(ajax获取+循环画图)

    出来工作几个月了 整理下最近学的的东西 刚刚才开通博客 第一篇就先画仪表盘 柱状图 有什么写的不好的地方 请大家多多指教 jsp中首先要引用几个文件 xx xxx js 是我js代码存放的文件
  • C++标准库异常类

    C 标准库异常类继承层次中的根类为exception 其定义在exception头文件中 它是C 标准库所有函数抛出异常的基类 exception的接口定义如下 namespace std class exception public ex