0

0

C++标准库异常有哪些常用类型 std exception及其派生类介绍

P粉602998670

P粉602998670

发布时间:2025-07-25 10:32:01

|

657人浏览过

|

来源于php中文网

原创

c++++标准库中的异常体系基于std::exception类构建,位于头文件中。1. std::exception是所有标准异常的基类,定义了返回错误信息的虚函数what()。2. 逻辑错误类型包括:std::logic_error(逻辑错误基类)、std::invalid_argument(无效参数)、std::domain_error(定义域错误)、std::length_error(长度超出限制)、std::out_of_range(访问越界)。3. 运行时错误类型包括:std::runtime_error(运行时错误基类)、std::range_error(范围错误)、std::overflow_error/underflow_error(上溢/下溢错误)、std::regex_error(正则表达式错误)、std::system_error(系统错误)。4. 其他特殊异常包括:std::bad_alloc(内存分配失败)、std::bad_cast(dynamic_cast失败)、std::bad_typeid(typeid空指针)、std::bad_function_call(调用空function)。建议自定义异常从std::exception或其派生类继承并重写what()方法以保持一致性。

C++标准库异常有哪些常用类型 std exception及其派生类介绍

C++标准库中的异常体系是基于 std::exception 类构建的,它位于 头文件中。这个类是所有标准异常类型的基类,开发者也可以从它派生自己的异常类。在实际编程中,我们通常会使用其派生出的具体异常类型来区分不同的错误情况。

C++标准库异常有哪些常用类型 std exception及其派生类介绍

下面是一些常用的异常类型及其适用场景,帮助你在不同情况下选择合适的异常类。

C++标准库异常有哪些常用类型 std exception及其派生类介绍

1. std::exception —— 所有标准异常的基类

这是 C++ 标准库中所有异常类的根类。它定义了一个虚函数 what(),用于返回描述异常的字符串信息:

立即学习C++免费学习笔记(深入)”;

virtual const char* what() const noexcept;

虽然我们可以直接抛出和捕获 std::exception 对象,但通常更推荐使用其派生类,因为它们提供了更具体的错误信息。

C++标准库异常有哪些常用类型 std exception及其派生类介绍

2. 逻辑错误相关的异常类型

这些异常表示程序在运行前就可能发现的错误,通常是由于调用者传入了不合法的参数或违反了某种前提条件。

白果AI论文
白果AI论文

论文AI生成学术工具,真实文献,免费不限次生成论文大纲 10 秒生成逻辑框架,10 分钟产出初稿,智能适配 80+学科。支持嵌入图表公式与合规文献引用

下载
  • std::logic_error
    这是逻辑错误类的基类,你可以从中派生自定义逻辑错误。

  • std::invalid_argument
    当函数接收到一个无效的参数时抛出。例如,将字符串转换为数字时输入了非数字字符。

  • std::domain_error
    表示函数的参数不在允许的定义域内。例如数学函数中负数开平方。

  • std::length_error
    当试图创建一个超出最大允许长度的对象时抛出,比如 std::stringappend 方法。

  • std::out_of_range
    访问越界时抛出,例如使用 vector::at()map::at() 访问不存在的元素。


3. 运行时错误相关的异常类型

这些异常表示在运行过程中发生的不可预测的问题,通常无法在编译阶段检测到。

  • std::runtime_error
    运行时错误的基类。

  • std::range_error
    表示计算结果超出了可用范围,例如浮点数精度溢出。

  • std::overflow_error / std::underflow_error
    分别表示上溢和下溢错误,常用于数值计算中。

  • std::regex_error
    使用正则表达式时发生错误,比如语法错误。

  • std::system_error
    与系统底层操作相关的问题,如文件打开失败、网络连接中断等。它包含一个 std::error_code 来提供更多细节。


4. 其他特殊情况下的异常

除了上述两类之外,还有一些特殊的异常用于特定场景:

  • std::bad_alloc
    new 操作符分配内存失败时抛出。

  • std::bad_cast
    dynamic_cast 转换失败时抛出(仅用于引用类型)。

  • std::bad_typeid
    如果对空指针执行 typeid 操作,会抛出此异常。

  • std::bad_function_call
    调用一个空的 std::function 对象时抛出。


如果你需要自定义异常类,建议从 std::exception 或其派生类继承,并重写 what() 方法。例如:

struct my_exception : public std::runtime_error {
    my_exception() : std::runtime_error("Custom error occurred") {}
};

这样可以保持异常体系的一致性,并方便统一处理。


基本上就这些,C++ 标准库提供的异常类型已经覆盖了大多数常见错误场景。合理使用这些异常类型,可以让代码更具可读性和健壮性。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

249

2023.07.05

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

213

2023.08.11

正则表达式空格
正则表达式空格

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

351

2023.08.31

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

234

2023.11.17

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

528

2023.12.06

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号