迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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++中成功抛出超出范围的异常。

上一篇:在 C++ 中抛出异常消息

下一篇:没有了

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

本文地址:

相关文章

在 C++ 中抛出异常消息

发布时间:2023/08/21 浏览次数:192 分类:C++

它是通过在程序中可能出现问题的地方抛出异常来执行的。 C++ 中有几个异常处理关键字,但本文将介绍如何使用可变消息引发异常。使用标准 C++ 异常抛出带有消息的异常 - 无效参数

C++ 中的 A Declaration Shadows a Parameter 错误

发布时间:2023/08/21 浏览次数:188 分类:C++

每个对象或变量总是有一些边界、范围或作用域来访问其他类成员,例如由 C++ 中的访问说明符定义为 public、private 或 protected 的数据成员或成员函数。当我们在程序的特定范围或块中多次定义

C++ 中的错误 Error ID Returned 1 Exit Status

发布时间:2023/08/21 浏览次数:130 分类:C++

C++ [Error]: Id returned 1 exit status 不是常见错误。 这通常意味着程序崩溃了,并且在不查看堆栈跟踪的情况下很难确定原因。

C++ 中错误 Too Many Arguments to Function

发布时间:2023/08/21 浏览次数:177 分类:C++

我们在编写一段代码时会遇到很多错误。 解决错误是编程中最关键的部分之一。本文将讨论我们在 C++ 中遇到的一个错误:Too Many Arguments to Function。

处理 C++ 中的错误

发布时间:2023/08/21 浏览次数:197 分类:C++

本文讨论了 C++ 中的错误和异常处理。C++ 中的错误处理 C++ 程序中可能存在多种类型的错误。 有些错误需要向用户发出提示。

C++ 中错误 Function Returns the Address of a Local Variable

发布时间:2023/08/21 浏览次数:119 分类:C++

根据作用域,C 和 C++ 中的变量分为局部变量和全局变量。 虽然可以从程序的任何部分访问全局变量,但局部变量却不然。让我们讨论一下为什么会出现这个错误以及如何修复它。

C++ 错误 Invalid Conversion of Int* to Int

发布时间:2023/08/21 浏览次数:154 分类:C++

这个简短的教程将讨论错误消息 Invalid conversation of int* to int 。 首先,让我们回顾一下 C++ 中的指针。

C++ 中的错误 Solved: Expression Must Have Class Type

发布时间:2023/08/21 浏览次数:62 分类:C++

让我们看看为什么会发生这种情况以及如何解决。C++ 中错误 Solved: Expression Must Have Class Type 为了更好地理解问题陈述,请查看下面的代码。 在这里,我们有一个名为 Deserts 的类,其中包含函数

C++ 迷宫求解器

发布时间:2023/08/20 浏览次数:150 分类:C++

迷宫求解算法是计算机科学和人工智能中的经典问题。C++ 迷宫求解器 迷宫求解算法旨在通过仅在四个罗盘方向上移动来找到从起点到终点的最短路径。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便