Boost logo

Boost Users :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2006-05-10 02:31:07


Roel wrote:

> Hi,
>
> I've been using boost::program_options but I have some questions about it.
>
> First: to catch errors that the users makes when specifying command-line
> options (eg I declared an option to be integer-only but the user
> specified a string), I surrounded the call to store() by a try/catch
> block:
>
> try {
> boost::program_options::store(
> boost::program_options::command_line_parser(argc, argv).
> options(desc).positional(p).run(), vm);
> }
> catch (boost::program_options::invalid_option_value e) {
> }
>
> But now how do I give a meaningfull error message? The what() function
> of invalid_option_value is private, what other options do I have?

You can use top-level try-block in main that catches std::exception. That
will catch all possible errors, and not just specific
'invalid_option_value'.

However, non-accessible 'what' is still a bug. I've fixed this, and will
commit as soon as Sourceforce's CVS is operational agian.

> Secondly, is there a mechanism to check the relation between options? I
> have a number of options: -a, -m and -d for add, modify and delete
> respectively; I want only one of them to be allowed at the same time.
> Also, when the -a option is specified, the -t and -r options are valid,
> and only then. Do I have to check all of that manually? Thanks.

I'm afraid this is not supported at the moment.

- Volodya


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net