C++ 中抛出超出范围的异常
在 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++中成功抛出超出范围的异常。
相关文章
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()函数在串口监视器上显示变量值。