<stdexcept>

std::invalid_argument

class invalid_argument;
无效参数异常

此类定义了用于报告无效参数的异常对象的类型。

它是程序可以抛出的标准异常。标准库的某些组件也抛出此类型的异常来表示无效参数。

它定义为
1
2
3
4
class invalid_argument : public logic_error {
public:
  explicit invalid_argument (const string& what_arg);
};
1
2
3
4
5
class invalid_argument : public logic_error {
public:
  explicit invalid_argument (const string& what_arg);
  explicit invalid_argument (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
16
17
// invalid_argument example
#include <iostream>       // std::cerr
#include <stdexcept>      // std::invalid_argument
#include <bitset>         // std::bitset
#include <string>         // std::string

int main (void) {
  try {
    // bitset constructor throws an invalid_argument if initialized
    // with a string containing characters other than 0 and 1
    std::bitset<5> mybitset (std::string("01234"));
  }
  catch (const std::invalid_argument& ia) {
	  std::cerr << "Invalid argument: " << ia.what() << '\n';
  }
  return 0;
}

可能的输出

Invalid argument: bitset::_M_copy_from_string


异常安全

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

另见