C++异常处理
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 |
下溢 |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。