c++ out_of_range
时间: 2023-11-02 10:05:17 浏览: 94
`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 语句捕获异常,输出错误信息。
相关问题
c++ out_of_range&e e.what()
`out_of_range`是C++ STL中的一个异常类,用于表示访问容器时的索引超出范围。当你使用`std::vector`, `std::array`, `std::string`等STL容器时,如果你使用了一个超出容器大小的索引,那么就会触发`out_of_range`异常。你可以使用`try-catch`块来捕获并处理这个异常。例如:
```c++
#include <iostream>
#include <vector>
int main() {
std::vector<int> v {1, 2, 3};
try {
std::cout << v.at(3); // 会触发 out_of_range 异常
}
catch (const std::out_of_range& e) {
std::cerr << "Out of range exception caught: " << e.what() << std::endl;
}
return 0;
}
```
输出:
```
Out of range exception caught: vector::_M_range_check: __n (which is 3) >= this->size() (which is 3)
```
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` 异常。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)