Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-08-13 08:31:01


From: "Eric Woodruff" <Eric.Woodruff_at_[hidden]>
> Sure, the details of how to handle unexpected exceptions are up for
debate.
> Originally, bad_exception seemed fitting to me, but giving std::exceptions
> special treatment by borrowing its .what () can be useful. Have you
reviewed
> my implementation?
>
> Anyhow, a boost::tuple is used to list the exceptions (which AFAIK
supports
> infinite recursion, limited by the compiler of course). My proposed
> implementation only accepted up to 10 exceptions as parameters to the
> throws_exceptions policy, however, the user could easily construct their
own
> tuple for which they would like the boost::thread to support.

I think that a reasonable course of action is to specify that join throws
"an implementation defined exception" that may or may not be the real
exception caught in the thread.

The portable implementation can enumerate all standard exception types
explicitly, and it can test whether the exception is-a

struct propagated_exception
{
    virtual auto_ptr<propagated_exception> clone() const = 0;
    virtual void throw_this() const = 0;
};

in order to propagate arbitrary exceptions. The rest would have to be
translated to thread_exception (or however it's called.)


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