Boost logo

Boost Users :

Subject: Re: [Boost-users] [exception] Using Boost.Exception infrastructure without using boost::exception
From: Mostafa (mostafa_working_away_at_[hidden])
Date: 2011-05-29 00:50:44


On Sat, 28 May 2011 21:01:56 -0700, Emil Dotchevski
<emildotchevski_at_[hidden]> wrote:

> On Sat, May 28, 2011 at 8:37 PM, Mostafa
> <mostafa_working_away_at_[hidden]> wrote:
>>> All of the Boost Exception functionality works only if the exceptions
>>> derive from boost::exception. Your only two choices are to do it
>>> explicitly or to call boost::throw_exception which does it for you.
>>
>> It seems that some functionality doesn't, namely
>> boost::enable_current_exception, and I was hoping to leverage such
>> functionality to achieve my aforementioned goal.
>
> boost::enable_current_exception enables the
> boost::current_exception/boost::exception_ptr support by returning an
> object that derives from boost::exception *and* the type of the passed
> object.
>
> Therefore:
>
> throw boost::enable_current_exception(my_exception());
>
> satisfies the requirement for deriving from boost::exception without
> requiring my_exception to derive from boost::exception.

If that is so, then that fact is omitted from the documentation for
boost::enable_current_exception, please see:

http://www.boost.org/doc/libs/1_46_1/libs/exception/doc/enable_current_exception.html

and the Note at the bottom of the said url seems to imply otherwise, by
stating "it is preferable to call boost::throw_exception. This is
guaranteed to throw an exception that derives from boost::exception". Can
you please add this fact to the above documentation?

The documentation for boost::throw_exception is more clear that it derives
 from the user defined type and boost::exception, see
http://tinyurl.com/3ks92g8, where it mentions "...
boost::throw_exception(e) is equivalent to throw
boost::enable_current_exception(boost::enable_error_info(e)) ...", and the
documentation for boost::enable_error_info (http://tinyurl.com/3zo3yu7)
makes it explicit that "... the returned object is of an unspecified type
that derives publicly from both T and boost::exception.". Hence, the
reason for my confusion on this matter.

Thanks,

Mostafa


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