(一)C++异常杂谈之初识异常对象

关于C++异常对象的几点理解

1、什么可以作为异常对象?

异常对象并不像我之前想象的那么复杂,反之,C++异常对象时非常简单的。异常对象可以分为以下几类
(1)C++的内置类型对象可以作为异常对象。比如:int、double
(2)C++的标准库中定义的异常对象(类类型)

标准异常类 描述 头文件
exception 最通用的异常类,只报告异常的发生而不提供任何额外的信息 exception
runtime_error 只有在运行时才能检测出的错误 stdexcept
rang_error 运行时错误:产生了超出有意义值域范围的结果 stdexcept
overflow_error 运行时错误:计算上溢 stdexcept
underflow_error 运行时错误:计算下溢 stdexcept
logic_error 程序逻辑错误 stdexcept
domain_error 逻辑错误:参数对应的结果值不存在 stdexcept
invalid_argument 逻辑错误:无效参数 stdexcept
length_error 逻辑错误:试图创建一个超出该类型最大长度的对象 stdexcept
out_of_range 逻辑错误:使用一个超出有效范围的值 stdexcept
bad_alloc 内存动态分配错误 new
bad_cast dynamic_cast类型转换出错 type_info
除了抛出用户自定义的类型外,C++标准库定义了一组类,用户报告标准库函数遇到的问题。这些标准库异常类只定义了几种运算,包括创建或拷贝异常类型对象,以及为异常类型的对象赋值。
(3)自定义的类类型的对象

2、异常对象的特殊之处

存储比较特殊,它不存储在堆内存中,又不存储在栈内存中。在windows下它存储在线程块TIB中。
(一)C++异常杂谈之初识异常对象

3、类类型的异常对象的特点?

其名称往往代表了异常的类型。

4、异常对象如何存储到特殊的内存块中?

操作系统会根据throw+表达式构成的throw语句,使用复制构造函数将一份该类型的数据存储在特殊内存中。

5、异常对象的作用是什么?

起到一个信息匹配的功能,即将存在特殊内存中的异常对象与对应的catch进行信息匹配,然后决定执行哪个catch的代码。

原文链接: https://www.cnblogs.com/lasnitch/p/12260191.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    (一)C++异常杂谈之初识异常对象

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/326976

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午4:03
下一篇 2023年3月1日 下午4:04

相关推荐