catch (out_of_range)
时间: 2023-07-16 07:14:08 浏览: 286
这是一个 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 语句捕获,并输出异常信息。
相关问题
catch (const std::out_of_range& e)
`catch (const std::out_of_range& e)` 是C++异常处理中的一部分,它用于捕获并处理由 `std::out_of_range` 类型异常引发的错误。`std::out_of_range` 是定义在 `<stdexcept>` 头文件中的一个标准异常类型,当使用某个容器(如 `std::vector`、`std::string` 等)的下标访问超出其定义范围时,通常会抛出这种异常。
使用 `catch (const std::out_of_range& e)` 可以专门处理 `std::out_of_range` 类型的异常。这种异常处理允许程序在发生下标越界等错误时,能够做出适当的响应,比如记录错误信息、通知用户、恢复程序状态或者进行其他错误处理操作,而不是直接导致程序崩溃。
下面是一个简单的例子来展示如何使用 `catch (const std::out_of_range& e)`:
```cpp
#include <iostream>
#include <vector>
#include <stdexcept>
int main() {
std::vector<int> vec(5);
try {
// 假设这里有一个错误,试图访问一个不存在的下标
int value = vec.at(10);
} catch (const std::out_of_range& e) {
// 处理 std::out_of_range 异常
std::cerr << "捕获到 std::out_of_range 异常: " << e.what() << std::endl;
// 进行一些错误处理,比如提示用户或者记录日志
}
return 0;
}
```
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 语句捕获异常,输出错误信息。
阅读全文