<stdexcept>

std::out_of_range

class out_of_range;
越界异常

此类定义了用于报告越界错误的异常对象的类型。

它是一个可以被程序抛出的标准异常。标准库的一些组件,例如 vectordequestringbitset,也会抛出此类异常来指示参数超出范围。

它被定义为
1
2
3
4
class out_of_range : public logic_error {
public:
  explicit out_of_range (const string& what_arg);
};
1
2
3
4
5
class out_of_range : public logic_error {
public:
  explicit out_of_range (const string& what_arg);
  explicit out_of_range (const char* what_arg);
};

成员

构造函数
传递给 what_arg 的字符串与成员 what 返回的值内容相同。

此类从 logic_error 继承了 what 成员函数。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// out_of_range example
#include <iostream>       // std::cerr
#include <stdexcept>      // std::out_of_range
#include <vector>         // std::vector

int main (void) {
  std::vector<int> myvector(10);
  try {
    myvector.at(20)=100;      // vector::at throws an out-of-range
  }
  catch (const std::out_of_range& oor) {
    std::cerr << "Out of Range error: " << oor.what() << '\n';
  }
  return 0;
}

可能的输出

Out of Range error: vector::_M_range_check


异常安全

强保证: 如果构造函数抛出异常,则没有副作用。

另见