如何使用c++的标准异常类以及如何处理异常类
1、c++语言本身的异常处理
1> 操作符new失败会抛出bad_alloc异常
2> 动态型别转换失败时(如:dynamic_cast转换失败的时候)会抛出bad_cast
3> 执行期间类别便是过程中,如果传递的参数或者指针为空而抛出的异常为:bad_typeid
4> 如果发生了非预期的异常,就会抛出bad_exception异常
class C;
class C1; //定义两个类
void function() throw(C ,std::bad_exception)
{
throw C; //正确的接受到异常
throw C1;//接受到非预期的异常 unexception
}
2、 c++ 标准库发出的异常
c++标准库发出的异常比较多,他的所有异常总是派生自logic_error,使用它能避免在程序中产生一些逻辑错误。
1> invalid_argument 无效参数。
2> length_error 长度越界
3> out_of_range 错误索引(如数组,或者stl容器的错误索引)
4>domaln_error 专业领域范畴外的错误。
3、 程序作用域外的异常
程序作用域外的异常派生自runtime_error,用来指出不再范围内,且不容回避的事情。
range_error 内部计算时发生的错误
overflow_error 算术运算发生上溢
underflow_error 算数运算发生的下溢
4、 异常处理
为了能接受到异常并能在catch中捕获并处理异常,你必须采用标准库所采用的标准接口,这个标准接口之含有一个成员函数what(),用于获取异常信息,他返回一个以null结束的字符串。
namespace std{ class Execption() { virtual const char* what()const throw; };}
这样你就可以打印错误信息
5、自定义异常处理类
通过继承标准的异常类,你就可以编写自己的异常处理函数。
namespace wdd{ class wddException : public Execption() { public: wddException (); virtual const char* what()const throw; };}
void function()
{
....
throw wddExecption(...);
}