Better handling of missing/wrong key in boost::program_options

Есть ли способ узнать, какой ключ был задействован при сбое вызова, подобного следующему?

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

Если ключ отсутствует на карте или не может быть преобразован в int, я получаю довольно неинформативный bad_any_cast, и я не могу знать ничего из следующего:

  • ключ задействовал
  • сохраненное значение, или даже если оно есть.
  • задействованные типы

Я не могу найти из любое решение, которое не связано ни с изменением заголовка boost, ни с переносом каждого вызова вышеупомянутого в блок try..catch. Я думаю, что это обычная проблема, так что, возможно, кто-то другой знает способ получше.

5
задан Marco Righele 13 April 2011 в 10:42
поделиться