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

下溢

阅读更多

没有更多推荐了,返回首页