Boost logo

Boost :

Subject: Re: [boost] program options (consider using BOOST_THROW_EXCEPTION)
From: Vladimir Prus (ghost_at_[hidden])
Date: 2012-06-22 03:51:51


On 22.06.2012 11:33, Emil Dotchevski wrote:
> On Thu, Jun 21, 2012 at 11:44 PM, Vladimir Prus<ghost_at_[hidden]> wrote:
>
>> On 20.06.2012 07:44, Rowan James wrote:
>>
>>> On a related note; is there interest in a patch set to use
>>> BOOST_THROW_EXCEPTION to add this (yes, programmer-oriented) information
>>> to
>>> the exceptions thrown by Program Options and/or other Boost libraries?
>>>
>>
>> Sorry, but I kinda miss context here (and I did read your original post).
>> What are advantages of
>> using BOOST_THROW_EXCEPTION and what are drawbacks? Could you summarize
>> those for me?
>>
>
> Allow me :-
>
> BOOST_THROW_EXCEPTION, being a macro, is able to record the file name, the
> function name, and the line number of the throw, which is useful when
> diagnosing unexpected exceptions:
>
> catch(...)
> {
> std::cerr<< "Unexpected exception caught. Diagnostic information
> follows.\n";
> std::cerr<< boost::current_exception_diagnostic_information();
> }
>
> The exception object is examined dynamically for any and all useful
> information: type, what(), throw location, any stored boost::error_info
> objects, etc. The location of the throw (if available) is formatted in a
> way Visual Studio understands: double-clicking shows the throw location,
> similarly to double-clicking compile errors.
>
> The downside is that when templates are involved, BOOST_CURRENT_FUNCTION
> (invoked by BOOST_THROW_EXCEPTION) can bloat the code. There is a Trac
> ticket for this.

Emil,

thanks for explaining. Given the above, I am not sure I am interested in using
BOOST_THROW_EXCEPTION for program_options, given that exceptions are used there to report
user mistakes mostly, and so function name or file line is of limited interest.

Thanks,
Volodya


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk