C++ throw(抛出异常)详解 您所在的位置:网站首页 throw与throws C++ throw(抛出异常)详解

C++ throw(抛出异常)详解

2023-09-28 12:33| 来源: 网络整理| 查看: 265

首页 > C++ > C++异常 C++ throw(抛出异常)详解   在《C++异常处理》一节中,我们讲到了 C++ 异常处理的流程,具体为:

抛出(Throw)--> 检测(Try) --> 捕获(Catch)

异常必须显式地抛出,才能被检测和捕获到;如果没有显式的抛出,即使有异常也检测不到。 在 C++ 中,我们使用 throw 关键字来显式地抛出异常,它的用法为:

throw exceptionData;

exceptionData 是“异常数据”的意思,它可以包含任意的信息,完全有程序员决定。exceptionData 可以是 int、float、bool 等基本类型,也可以是指针、数组、字符串、结构体、类等聚合类型,请看下面的例子: char str[] = "http://c.biancheng.net"; char *pstr = str; class Base{}; Base obj; throw 100; //int 类型 throw str; //数组类型 throw pstr; //指针类型 throw obj; //对象类型 一个动态数组的例子 C/C++ 规定,数组一旦定义后,它的长度就不能改变了;换句话说,数组容量不能动态地增大或者减小。这样的数组称为静态数组(Static array)。静态数组有时候会给编码代码不便,我们可以通过自定义的 Array 类来实现动态数组(Dynamic array)。所谓动态数组,是指数组容量能够在使用的过程中随时增大或减小。 下面这段代码虽然有点长,但它是一个典型的使用异常的场景,请大家耐心阅读。 #include #include using namespace std; //自定义的异常类型 class OutOfRange{ public: OutOfRange(): m_flag(1){ }; OutOfRange(int len, int index): m_len(len), m_index(index), m_flag(2){ } public: void what() const; //获取具体的错误信息 private: int m_flag; //不同的flag表示不同的错误 int m_len; //当前数组的长度 int m_index; //当前使用的数组下标 }; void OutOfRange::what() const { if(m_flag == 1){ cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有