迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

C++ 中抛出超出范围的异常

作者:迹忆客 最近更新:2023/08/20 浏览次数:

在 C++ 中,我们可以使用 try-catch 块来处理异常。 我们还可以使用 throw 语句显式抛出异常。

本文讨论如何在 C++ 中抛出超出范围的异常。


C++ 中抛出超出范围的异常

要在 C++ 中抛出超出范围的异常,您可以创建一个异常对象。 为此,您可以使用 out_of_range() 构造函数。

out_of_range() 构造函数在标准 C++ 库中定义。 它采用字符串对象作为其输入参数并返回超出范围的异常。

您可以使用 throw 语句引发异常,如以下示例所示。

#include <iostream>

int main() {
    int number= 100;
    if (number>50){
        throw std::out_of_range("I am an exception.");}
    return 0;
}

输出:

terminate called after throwing an instance of 'std::out_of_range'
  what():  I am an exception.
Aborted

在这里,我们首先创建了一个名为 number 的变量。 然后,我们检查数字中的值是否大于 50。

如果是,我们就抛出了标准 C++ 库中定义的超出范围的异常。

您还可以使用 try-catch 块处理超出范围的异常。 我们将在 try 块中抛出异常。

我们将捕获超出范围的异常并打印我们已经在 catch 块中处理了异常。 您可以在以下示例中观察到这一点。

#include <iostream>

int main() {
    int number= 100;
    try{
        if (number>50){
            throw std::out_of_range("I am an exception.");
        }
    }
    catch(std::out_of_range){
        std::cout << "I am here. Exception caught and handled.";
    }
    return 0;
}

输出:

I am here. Exception caught and handled.

上面的输出表明程序在处理超出范围的异常后已正常终止。 另一方面,之前的程序因为我们没有处理异常而被中止。


在 C++ 中抛出超出范围异常时出错

有时可以在 C++ 中编写一个程序来抛出超出范围的异常,如下所示。

#include <iostream>

int main() {
    int number= 100;
    try{
        if (number>50){
            throw std::out_of_range;
        }
    }
    catch(std::out_of_range){
        std::cout << "I am here. Exception caught and handled.";
    }
    return 0;
}

当我们运行上面的代码时,程序将遇到错误,并显示以下执行跟踪。

/tmp/EG06BKsTcd.cpp: In function 'int main()':
/tmp/EG06BKsTcd.cpp:8:36: error: expected primary-expression before ';' token
    8 |             throw std::out_of_range;
      |                                    ^

发生错误是因为我们抛出了 std::out_of_range 而不是超出范围的异常对象。 std::out_of_range 构造函数是用于创建超出范围异常的类型定义。

因此,您不能使用 throw 语句抛出它。 要在 C++ 中抛出超出范围的异常,必须通过将字符串作为输入参数传递给 std::out_of_range() 构造函数来创建超出范围的异常; 只有这样你才能在C++中成功抛出超出范围的异常。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Arduino 中停止循环

发布时间:2024/03/13 浏览次数:444 分类:C++

可以使用 exit(0),无限循环和 Sleep_n0m1 库在 Arduino 中停止循环。

Arduino 复位

发布时间:2024/03/13 浏览次数:315 分类:C++

可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。

Arduino 的字符转换为整型

发布时间:2024/03/13 浏览次数:181 分类:C++

可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。

Arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:381 分类:C++

可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。

Arduino if 语句

发布时间:2024/03/13 浏览次数:123 分类:C++

可以使用 if 语句检查 Arduino 中的不同条件。

Arduino ICSP

发布时间:2024/03/13 浏览次数:214 分类:C++

ICSP 引脚用于两个 Arduino 之间的通信以及对 Arduino 引导加载程序进行编程。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:127 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

Arduino 中的子程序

发布时间:2024/03/13 浏览次数:168 分类:C++

可以通过在 Arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便