gpt4 book ai didi

c++ - 更好地处理 boost::program_options 中丢失/错误的键

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:41:37 28 4
gpt4 key购买 nike

有没有办法知道当像下面这样的调用失败时涉及到哪个键?

boost::program_options::variables_map vm;
...
int foo_bar = vm["some_key"].as<int>();

如果键从映射中丢失,或者不能转换为 int,我会得到一个相当无用的 bad_any_cast,并且我不知道以下任何内容:

  • 涉及的关键
  • 储值,或者即使它存在。
  • 涉及的类型

我找不到任何不涉及修改 boost header 或将对上述内容的每次调用包装在 try..catch block 中的解决方案。我认为这是一个常见问题,所以也许其他人知道更好的方法。

最佳答案

马可,

如果不修改库,就无法获得更好的诊断。

但是,请注意,一般来说,我不确定这种情况下的异常(exception)情况是否应该非常详细:- 如果你使用错误的类型来访问变量,你就会遇到编码错误。您可以使用调试器轻松跟踪它- 如果你访问一个不存在的变量,你要么需要 if vm.count,要么使用默认值。同样,这可能是使用调试器解决的最佳编码错误。

我同意 bad_any_cast 是可以改进的东西,但似乎可以向用户报告的异常不应该是这里的目标,异常是编码错误的结果。

关于c++ - 更好地处理 boost::program_options 中丢失/错误的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647850/

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