C++异常处理的那些事

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zby1001/article/details/52945525

    abort()函数是C++的一个错误处理函数,实现方式是向标准错误流(cerr)发送“abnormal program termination"(不同操作系统内容可能有差别)。

    使用try.....catch......模式时如果throw的异常没被catch到,程序最终会调用abort()函数。


    exception类:虚基类,包含一个what()虚拟成员,返回一个字符串。

    exception是其他异常类的基类。

重写what()

const char* what()

{

...........

}


C++中定义的基于exception的异常:

1.stdexcept

头文件stdexcept定义了几个异常类

以logic_error为例,这些类构造函数接受一个string对象作为参数,该参数提供what方法以C-风格字符串方式返回字符的字符数据。

logic_error系列异常类型有:

runtime_error

domain_error(定义域错误)

invalid_argument(无效参数)

length_error(长度错误)

out_of_bounds(索引错误)

logic_error(逻辑错误)

上述类名称指出了它用于报告的错误类型

runtime_error系列异常类型:

range_error

overflow_error

underflow_error

一般而言,logic_error系列异常表明存在可以通过编程修复的问题,而runtime_error系列异常表示存在无法避免的问题。


2.bad_alloc异常和new

对于使用new导致的内存分配问题,C++处理方式是让new引发bad_alloc异常。头文件new包含bad_alloc()类的声明。


最后,catch(...)会拦截到所有未被前面catch到,而自己又不知道什么原因的错误。

猜你喜欢

转载自blog.csdn.net/zby1001/article/details/52945525