码迷,mamicode.com
首页 > 编程语言 > 详细

C++异常处理

时间:2015-05-21 12:11:29      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

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

下溢

 

C++异常处理

标签:

原文地址:http://www.cnblogs.com/greatbegin20150413/p/4519049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!