作者: winterTTr (转载请注明) 资料来源:《STL标准库》
-
标准异常类
- 为了语言支持而使用的异常类
- bad_alloc :在new失败的时候,被抛出(除非使用nothrow版本的new)
- bad_cast :在使用dynamic_cast转换“引用类型”失败的时候抛出
- bad_typeid:如果传给typeid操作符的是0或者空指针时抛出
- bad_exception:用来处理未期望的异常出现的情况,使用unexpected()函数进行相应。当函数抛出其异常声明类表中未声明的异常类型时unexpected()函数会被调用
- 为了标准库使用的异常类
这些异常类,基本上都是从logic_error继承而来的,理论上讲,这些异常都能够在一定程度上被避免。
- invalid_argument无效的参数
- length_error 长度错误,例如向字符串添加了太多的字符
- out_of_range 超出边界,例如:访问随机访问对象时索引超出最大size
- domain_error域名错误
- ios_base::failure专门用于I/O的问题,例如:当一个流因为错误或者文件结尾而改变状态的时候
- 编程范围之外的异常类
这些类通常继承自runtime_error,例如:range_error,overflow_error,underflow_error
- 标准库抛出的异常
一般来说,标准库本身可能会抛出下面这几种异常range_error,out_of_range,invalid_argument。当然不排除某些库自己实现的其他异常。
- 异常对应的头文件
<exception> bad_exception,exception
<new> bad_alloc
<typeinfo> bad_cast,bad_typeid
<ios> ios_base::failure
<stdexcept> 其他的异常类