C++ 异常处理

2018-05-18  创建人:Ruo_Xiao
邮箱:xclsoftware@163.com

一、C++ 异常处理的组成部分

C++的异常处理由throw表达式、try语句块、catch子句和异常类组成。

二、throw

throw表达式用来引发异常,其后表达式就是抛出的异常的类型,可以是int、double、类等。
栗子:

    try
    {
        throw 1;       //(1)
        throw 1.0;     //(2)
        throw runtime_error("我是runtime_error错误!");   //(3)
    }
    catch (int i)
    {
        cout<<"我是int的错误!";
    }
    catch (double d)
    {
        cout<<"我是double的错误!";
    }
    catch (runtime_error err)  //异常类
    {
        cout<<err.what();
    }

依次执行(1)(2)和(3),其结果如下:
这里写图片描述
这里写图片描述
这里写图片描述

三、try

这里写图片描述

  1. 当异常抛出时,首先程序会在抛出异常的函数中搜索对应的catch子句,若不存在,则终止该函数,在调用该函数的函数中寻找匹配的catch子句,依次类推,直至找到匹配的catch子句。
  2. 上述过程中,若找不到匹配的catch子句,则程序转到标准的库函数terminate函数中,终止该函数。
  3. 若找到匹配的catch子句,执行完成之后,程序会跳转到try语句块最后的catch子句之后的那条语句执行。

四、异常类

  1. 作用:用来报告标准库函数遇到的问题。
  2. 定义在四个头文件中:
    (1)exception头文件中定义了最通用的异常类exception,只报告异常发生,没有其他额外信息。
    (2)stdexcept定义了如下异常类:
    这里写图片描述
    (3)new头文件定义的bad_alloc异常类型。
    (4)type_info头文件定义的bad_cast异常类型。
  3. 上述中,exception、bad_alloc和bad_cast必须使用默认初始化。其他的类型必须使用string或者C风格字符串进行初始化。

(SAW:Game Over!)

猜你喜欢

转载自blog.csdn.net/itworld123/article/details/80360637