博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++异常处理
阅读量:5085 次
发布时间:2019-06-13

本文共 1584 字,大约阅读时间需要 5 分钟。

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

下溢

 

转载于:https://www.cnblogs.com/greatbegin20150413/p/4519049.html

你可能感兴趣的文章
ambari 大数据安装利器
查看>>
java 上传图片压缩图片
查看>>
magento 自定义订单前缀或订单起始编号
查看>>
ACM_拼接数字
查看>>
计算机基础作业1
查看>>
Ubuntu 深度炼丹环境配置
查看>>
C#中集合ArrayList与Hashtable的使用
查看>>
从一个标准 url 里取出文件的扩展名
查看>>
map基本用法
查看>>
poj-1163 动态规划
查看>>
Golang之interface(多态,类型断言)
查看>>
Redis快速入门
查看>>
BootStrap---2.表格和按钮
查看>>
Linear Algebra lecture 2 note
查看>>
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>