C++标准库异常类
2015-09-04 16:54
176 查看
C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下:
除了exception类,C++还提供了一些类,用于报告程序不正常的情况,在这些预定义的类中反映的错误模型中,主要包含逻辑错误和运行时错误两大类。
逻辑错误主要包括invalid_argument, out_of_range, length_error, domain_error。当函数接收到无效的实参,会抛出invaild_argument异常,如果函数接收到超出期望范围的实参,会抛出out_of_range异常,等等。
运行时错误由程序域之外的事件引发,只有在运行时才能检测,主要包括range_error, overflow_error, underflow_error。函数可以通过抛出range_eroor报告算术运算中的范围错误,通过抛出overflow_error报告溢出错误。
另外,在new头文件中定义了bad_alloc异常,exception也是bad_alloc的基类,用于报告new操作符不能正确分配内存的情形。当dynamic_cast失败时,程序会抛出bad_cast异常类,其也继承自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类。
相关文章推荐
- C++基础---有返回值类型函数(返回非引用类型)
- stl内存池学习
- extern "C"的用法解析
- C++堆栈的比较
- C++基础---无返回值函数(void函数)
- C++基础---函数的返回类型
- c语言描述之广度优先搜索——无权最短路径
- 《C++primer(第五版)》学习之路-第三章:字符串、向量和数组
- C++ I/0 Stream <setf and Manipulators>
- vc++出现warningC4819的处理方法
- C++基础---静态联编与动态联编
- C++基础---虚析构函数与纯虚析构函数
- C++继承访问方式
- c++中sort()及qsort()的用法总结
- C++基础---纯虚函数
- C语言排序实例(选择、冒泡、插入、折半、快速)
- C++基础---虚函数
- c++primer之顺序容器(容器库概览)
- C++基础---浅层及深层拷贝构造函数
- 黑马程序员——C语言结构体