1、罕铞泱殳c++语言本身的异常处理1> 操作符new失败会抛出bad_alloc异常2> 动态型别茌慊瑞谷转换失败时(如:dynamic_cast转换失败的时候)会抛出bad_cast3> 执行期间类别便是过程中,如果传递的参数或者指针为空而抛出的异常为:bad_typeid4> 如果发生了非预期的异常,就会抛出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(...);}