Kri*_*Oza 29 c++ exception-handling c++11
从cplusplus.com参考文献中可以看出,对于C++ 98或更高版本的C++中的异常处理<exception>来说<stdexcept>,这似乎<exception>已经足够了.
为什么C++有两个头文件用于异常处理?这对我的发展有何影响?我应该使用哪个标头?
101*_*010 44
<stdexcept>:定义一组标准异常,库和程序都可以使用它们来报告常见错误.
<exception>:std::exception为标准库的元素抛出的所有异常定义基类(即),以及帮助处理异常的几种类型和实用程序.
因此,<exception>只定义了类std::exception,同时<stdexcept>定义了几个继承自的类std::exception(例如std::logic_error,std::out_of_range).这就是为什么<stdexcept>包括<exception>.
它们位于单独的头文件中,因为如果要定义自己的异常类继承std::exception(而不是使用类<stdexcept>),则可以避免不必要的定义.
Max*_*kin 12
一个实际考虑因素是<stdexcept>需要std::string定义(异常构造函数接受std::string并具有std::string数据成员),而不需要捕获和查询std::exception std::string声明或定义.
换句话说,std::exception处理程序只需要<exception>.throw网站需要它抛出的特定异常类的标头.
| 归档时间: |
|
| 查看次数: |
10598 次 |
| 最近记录: |