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

|| 当以下呼叫失败时,是否有办法知道涉及哪个键?
boost::program_options::variables_map vm;
...
int foo_bar = vm[\"some_key\"].as<int>();
如果键从映射中丢失,或者不能转换为int,则我得到的消息不多,bad_any_cast,并且我不知道以下任何一项: 涉及的关键 存储的值,即使它在那里也是如此。 涉及的类型 我找不到任何不涉及修改boost标头或将每个对以上调用的包装都放在try..catch块中的解决方案。 我认为这是一个常见问题,所以也许其他人知道更好的方法。     
已邀请:
马可 如果不修改库,就无法获得更好的诊断信息。 但是,请注意,总的来说,我不确定这种情况下的异常是否应该非常详细: -如果您使用错误的类型访问变量,则可能是编码错误。您可以使用调试器轻松跟踪 -如果访问不存在的变量,则需要使用vm.count或使用默认值。同样,这可能是使用调试器最好解决的编码错误。 我同意bad_any_cast是可以改进的东西,但是似乎可以报告给用户的异常不是这里的目标,因为异常是编码错误的结果。     

要回复问题请先登录注册