C++异常处理基本概念和机理

1、 异常是指存在于运行时的反常行为。典型的异常行为包括失去数据库连接以及遇到意外输入等。

2、 在C++中异常处理包括:

A. throw表达式异常检测部分使用throw表达式来表示它遇到了无法处理的问题。我们说throw引发了异常。

B. try语句块异常处理部分使用try语句块处理异常。try语句以关键字try开始,并以一个或多个catch子句结束。try语句块中抛出的异常被某个catch处理。

C. 一套异常类:用于throw表达式和相关的catch子句之间传递异常的具体信息。

throw表达式介绍

程序的异常检测部分使用throw来抛出异常。表达式:throw和紧随其后的一个表达式(此表达式为抛出的异常类型)例子:

C++异常处理基本概念和机理

其中runtime_error是一个异常类,定义在stdexcept头文件中。必须初始化异常类的对象,方式是提供给它一个string对象或者一个C风格的字符串。关于异常类后边会介绍。

try语句块

通用语法:

try{

program-statements //和其他任何块一样,任意的C++的语句。try声明的变量在外部不可以使用

}

catch(exception-declaration) //对象声明,称为异常声明

{

handler-statements

}

catch(exception-declaration)

{

handler-statements

}

·

·

·

例子:

C++异常处理基本概念和机理

结果如下:

C++异常处理基本概念和机理

程序解读:程序本来要执行的任务在try语句块中,因为这段代码可能会抛出一个runtime_error 类型的异常,try语句块后边的catch子句负责处理此异常。接下来执行catch块内的语句。输出提示语句要求用户指定程序是否继续,如果为N,跳出while循环,否则,进行下一次迭代。

err.what():定义了err为runtime_error类型,what是runtime_error类的一个成员函数,这些成员函数没有参数,返回的是C风格字符串。runtime_error的what成员函数返回的是初始化的string对象。

说明

当程序中发生异常,如果函数中没有使用try语句块或者没有找到相匹配的catch子句,那么系统将调用terminate函数(标准库函数),执行该函数导致程序非正常退出。

此文只是异常处理的最基本一点概念介绍,更深入的会在后期慢慢发布。


分享到:


相關文章: