c++中的stexcept与exception头文件
stdexcept vs exception Headers in c++
从cplusplus.com对<exception>
和<stdexcept>
的参考来看,<exception>
似乎足以在c++ 98或更高版本的c++中处理异常。
为什么c++有两个头文件用于异常处理?这对我的发展有什么影响?我应该使用哪个标题?
-
<stdexcept>
:定义一组标准异常,库和程序都可以使用这些异常来报告常见错误。 -
<exception>
:为标准库元素抛出的所有异常定义基类(即std::exception
),以及帮助处理异常的几个类型和实用程序。
所以,<exception>
只定义了类std::exception
,而<stdexcept>
定义了几个继承自std::exception
的类(例如,std::logic_error
, std::out_of_range
)。这就是<stdexcept>
包含<exception>
的原因。
它们在单独的头文件中,因为如果您想定义继承std::exception
的自己的异常类(而不使用<stdexcept>
的类),您可以避免不必要的定义。
一个实际的考虑是<stdexcept>
需要std::string
定义(异常构造函数接受std::string
并具有std::string
数据成员),而捕获和查询std::exception
则不需要std::string
声明或定义。
也就是说,std::exception
处理器只需要<exception>
。throw站点需要它所抛出的特定异常类的头文件
exception是供用户继承和定义自己的异常。
stexcept 用于捕获和处理标准异常
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- c++中的stexcept与exception头文件
- 派生自库中的std::exception:仅头文件解决方案是否适用于捕获异常