C++异常处理的那些事

    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到,而自己又不知道什么原因的错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值