首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++学习笔记(九) 错误机制

2012-08-17 
C++学习笔记(九) 异常机制同大多数的高级语言一样,C也有自己的异常处理机制,用于方便的处理程序运行过程中

C++学习笔记(九) 异常机制

同大多数的高级语言一样,C++也有自己的异常处理机制,用于方便的处理程序运行过程中可以预料但不可避免的错误。

C++的异常抛出方法是用throw关键字,同java不一样,C++可以抛出任何类型,包括原生数据类型和自定义数据类型等,而java则允许抛出实现throwable接口的类的实例。有一点需要注意的是,C++不存在数组或函数类型的异常,如果抛出一个数组,被抛出的对象转换为指向数组首元素的指针,如果抛出一个函数,函数被转换为指向该函数的指针。

尽管C++几乎允许抛出任何类型的异常,但我们最好还是抛出exception类或是其派生类的子对象,下图展示了C++提供的异常类的继承层次:

C++学习笔记(九) 错误机制

如果我们需要自定义异常类,可以选择继承runtime_error或是logic_error或直接继承exception类。

抛出的异常会顺着调用栈往上搜索,直到找到相应的处理块。C++的处理块的定义方式和Java类似,下面简单展示下异常处理的代码:

void test() throw(runtime_error, logic_error) {//...some implementation}void (*p)() throw(runtime_error) = test;//error


参考文献:《C++ Primer》Stanley B.Lippman Barbara E.Moo《C++语言程序设计》 郑莉 董渊 何江舟

热点排行