1 | #include <iostream>
|
---|
2 | #include <stdexcept>
|
---|
3 | #include <boost/program_options.hpp>
|
---|
4 |
|
---|
5 | using namespace std;
|
---|
6 | namespace po = boost::program_options;
|
---|
7 |
|
---|
8 | int main()
|
---|
9 | {
|
---|
10 |
|
---|
11 | try {
|
---|
12 | // Works OK!
|
---|
13 | //throw po::validation_error(po::validation_error::invalid_option_value);
|
---|
14 |
|
---|
15 | // Doesn't work and throw std::out_of_range exception
|
---|
16 | //throw po::validation_error(po::validation_error::invalid_option_value,
|
---|
17 | //"--test");
|
---|
18 |
|
---|
19 | // Doesn't work as above: std::out_of_range exception
|
---|
20 | //throw po::validation_error(po::validation_error::invalid_option_value,
|
---|
21 | //"--test", "");
|
---|
22 |
|
---|
23 | // Doesn't work properly. Although it doesn't throw out_of_range
|
---|
24 | // exception, the value "abc" is no shown. The output is:
|
---|
25 | // "Error: the argument for option 'test' is invalid"
|
---|
26 | throw po::validation_error(po::validation_error::invalid_option_value,
|
---|
27 | "--test", "abc");
|
---|
28 | }
|
---|
29 | catch(std::exception& e) {
|
---|
30 | cerr << "Error: " << e.what() << "\n";
|
---|
31 | return -1;
|
---|
32 | }
|
---|
33 | catch(...) {
|
---|
34 | cerr << "Unknown error!" << "\n";
|
---|
35 | return -1;
|
---|
36 | }
|
---|
37 |
|
---|
38 | return 0;
|
---|
39 | }
|
---|
40 |
|
---|
41 | // Compiled with g++ -std=c++11 -ggdb boost_program_options.cpp -o test -L/opt/local/lib -lboost_program_options-mt
|
---|
42 |
|
---|