Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-01-14 10:36:08


David Abrahams <dave_at_[hidden]> writes:

> Beman Dawes <bdawes_at_[hidden]> writes:
>
>> At 03:29 PM 1/13/2003, David Abrahams wrote:
>>
>> >Remember that it's a bad idea to carry dynamically-allocated
>> >state in an exception object.
>>
>> I wrestled with that a long time with the Filesystem Library, and
>> finally ignored it. The advice is good in general, but there just
>> didn't seem to be any way to meet the needs of users without
>> carrying several paths (which contain std::strings.)
>
> Then as a last resort you ought to be holding them via shared_ptr.
> It's critical that the exception object doesn't throw when it's
> copied.

Having looked at filesystem_error, I see that it does not adopt this
practice. This is a very serious design error, IMO, which can be
easily avoided. Just to clarify, if an exception object's copy
constructor throws, the program goes directly to terminate().

-- 
                       David Abrahams
   dave_at_[hidden] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

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