<regex>

std::regex_error

class regex_error : public runtime_error { /* ... */ };
Regex 异常
此异常类型的对象由 regex 库的元素抛出。

它继承自标准异常 runtime_error,并有一个特殊的公共成员函数,code,它返回一个特定类型的代码regex_constants::error_type,具体取决于抛出它的错误类型。

flagerror
error_collate表达式包含无效的排序元素名称。
error_ctype表达式包含无效的字符类名称。
error_escape表达式包含无效的转义字符,或末尾有转义。
error_backref表达式包含无效的反向引用。
error_brack表达式包含不匹配的方括号([]).
error_paren表达式包含不匹配的圆括号(()).
error_brace表达式包含不匹配的花括号({}).
error_badbrace表达式在花括号之间包含无效范围({}).
error_range表达式包含无效的字符范围。
error_space没有足够的内存将表达式转换为有限状态机。
error_badrepeat表达式包含一个重复说明符(*?+{),前面没有有效的正则表达式。
error_complexity尝试将正则表达式匹配的复杂度超过了预设级别。
error_stack没有足够的内存来确定正则表达式是否能匹配指定的字符序列。

成员函数

explicit regex_error (regex_constants::error_type ecode);
使用错误代码 ecode 构建一个 regex 异常。
regex_constants::error_type code() const;
返回构造时使用的错误代码。
regex_constants::error_type是一个枚举类型,用于唯一标识 regex 库中的错误(有关更多信息,请参阅 regex_constants)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// regex_error
#include <iostream>
#include <regex>

int main ()
{
  try {
     std::regex myregex ("*");
  } catch (std::regex_error& e) {
     if (e.code() == std::regex_constants::error_badrepeat)
       std::cerr << "Repeat was not preceded by a valid regular expression.\n";
     else std::cerr << "Some other regex exception happened.\n";
  }
  return 0;
}

输出(stderr):
Repeat was not preceded by a valid regular expression.


另见