Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-01-16 12:12:13


From: "bill_kempf" <williamkempf_at_[hidden]>
> --- In boost_at_y..., "Peter Dimov" <pdimov_at_m...> wrote:
> > A programmer that wants to catch the cancellation exception may
> have good
> > reasons to do so. In particular, letting an exception escape from a
> > destructor during stack unwinding terminates the process, no
> questions
> > asked. ;-)
>
> That's not a reason to catch the request, it's a reason to DISABLE
> requests. A cancellation "exception" can be uncatchable and still be
> safe in cases such as this.

So, code that currently has

try
{
// ...
}
catch(...)
{
// eat exceptions, we're in a destructor
}

will need to be fixed to disable cancellation as well.

> > Making this exception non-catchable by catch(...) may also break
> correct
> > code (in the sense that it may silently become exception unsafe.)
>
> Care to explain in detail?

systemWideMutex.lock();

try
{
// ...
}
catch(...)
{
    systemWideMutex.unlock();
    throw;
}

systemWideMutex.unlock();

Not very good style but correct and working.

--
Peter Dimov
Multi Media Ltd.

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