catch (out_of_range)
时间: 2023-07-16 10:14:08 浏览: 110
这是一个 C++ 中的异常处理语句,用于捕获数组或 STL 容器中的下标越界错误。当程序访问数组或容器的下标超出其所能容纳的范围时,就会抛出 out_of_range 异常,此时可以用 catch (out_of_range) 来捕获并处理该异常。例如:
```
try {
vector<int> v = {1, 2, 3};
int x = v.at(10); // 访问超出容器长度的下标
} catch (out_of_range& e) {
cerr << "Caught exception: " << e.what() << endl;
}
```
在上面的代码中,访问超出容器长度的下标会抛出 out_of_range 异常,然后被 catch 语句捕获,并输出异常信息。
相关问题
c++ out_of_range
`out_of_range` 是 C++ STL 中的一个异常类,表示访问容器时索引超出范围的错误。比如,当使用 vector、string 或者 deque 等容器时,如果使用了一个超出范围的索引,就会抛出 `out_of_range` 异常。可以使用 try-catch 语句来捕获这个异常,以便进行错误处理。示例如下:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v = {1, 2, 3};
try {
int x = v.at(3); // 超出容器范围,抛出 out_of_range 异常
cout << x << endl;
} catch (out_of_range& e) {
cout << "Error: " << e.what() << endl;
}
return 0;
}
```
上述代码中,我们通过 `v.at(3)` 访问了 vector 容器中超出范围的索引 3,这时抛出了 `out_of_range` 异常,我们通过 catch 语句捕获异常,输出错误信息。
out_of_range和exception
`out_of_range` 是 C++ 标准库中的一种异常类型,表示访问数组容器时索引超出范围。例如,当你尝试访问一个数组的不存在的元素时,就会抛出 `out_of_range` 异常。
`exception` 是 C++ 标准库中的基类异常类型,表示其他类型的异常。当某个异常类型没有特定的标准异常类型与之对应时,可以抛出 `exception` 异常。你可以通过继承 `exception` 类来创建自定义的异常类型。
需要注意的是,`out_of_range` 是 `exception` 的子类,因此任何处理 `exception` 的代码都可以处理 `out_of_range` 异常。但是,如果你只想处理 `out_of_range` 异常,而不处理其他类型的异常,就可以使用单独的 `catch` 块来捕获 `out_of_range` 异常。