如何使用c++的标准异常类以及如何处理异常类

2025-10-23 10:17:20

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(...);

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢