gpt4 book ai didi

c++ - 你能阻止 std::regex 在无效表达式上抛出异常吗?

转载 作者:太空狗 更新时间:2023-10-29 22:55:30 26 4
gpt4 key购买 nike

std::regex regex("*", std::regex_constants::icase);

这会抛出一个异常。如果我有异常禁用,它将终止应用程序,这意味着我无法捕获它并且像往常一样不对它执行任何操作。

有没有办法防止无效的正则表达式在构造时抛出异常?或者某种 std::regex::isvalid("*") 检查是否存在?

我在想也许我可以想出一个单独的正则表达式来在我尝试构造函数之前解析输入的正则表达式字符串,但我更喜欢一个替代方案。

最佳答案

你不能。没有标准的方法来做到这一点。异常是标准库的固有部分,甚至不抛出自身异常的接口(interface)(例如臭名昭​​著的基于 error_code 的接口(interface) <filesystem> )也可以为其他操作抛出异常。

您最好的选择是使用设计为无异常的库,例如 Boost.Regexno_except启用标志。然后您可以在构建 boost::basic_regex 之后检查错误, 使用成员函数 status .

关于c++ - 你能阻止 std::regex 在无效表达式上抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com