c++中exception和stdexcept

c++ 异常处理

译自 c++ complete refrence 3rd Chapter 38

标准c++库定义了两个与异常相关的库,<exception><stdexcept>。异常通常用来报告错误。

<exception>

<exception>定义了与异常处理相关的类,声明和函数。

class exception {

public:

exception() throw();

exception(const char *const&);

exception(const char *const&, int);

exception(const bad_exception &ob) throw();

virtual ~exception() throw();

exception &operator=(const exception &ob) throw();

virtual const char *what(() const throw();

};

class bad_exception: public exception {

public:

bad_exception() throw();

bad_exception(const bad_exception &ob) throw();

virtual ~bad_exception() throw();

bad_exception &operator=(const bad_exception &ob) throw();

virtual const char *what(() const throw();

};

exception类是c++库中所有异常的父类。unexpected()函数抛出的就是bad_exception类型。每个异常类都重写了what()用于返回一段描述异常的字符串。

一些重要的类都继承于exception类。第一个是bad_alloc,当new操作失败时被抛出。另一个是bad_typeid,当错误地使用typeid运算时抛出。

<exception>定义下面的声明

类型

定义

terminate_handler

typedef void (*terminate_handler)( );

unexpected_handler

typedef void (*unexpected_handler)( );

<exception>定义下面的函数

函数

描述

terminater_handler set_terminate(terminate_handler fn) throw ();

指定程序结束时调用的函数,返回的是老的函数指针。

unexpected_handler set_unexpected(unexpected_handler fn) throw( );

同上。

void terminate();

当有异常末处理时调用,默认abort()调用此函数。

void unexpected();

同上

<stdexcept>

<stdexcept>定义了一些标准的异常类。分为两大类:逻辑错误和运行时错误。其中运行时错误是程序员不能控制的。

逻辑错误都继承自logic_error

异常

描述

domain_error

域错误

invalid_argument

非法参数

length_error

通常是创建对象是给出的尺寸太大

out_of_range

访问超界

运行时错误都继承自runtime_error

异常

描述

overflow_error

上溢

range_error

超出表示范围

underflow_error

下溢

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值