Of course order matters. I caught them in the order specified in the list.
----- Original Message -----
From: David Abrahams
Newsgroups: gmane.comp.lib.boost.devel
Sent: Tuesday, 2002:August:13 1:32 PM
Subject: Re: Attempting resolution of Threads & Exceptions Issue


----- Original Message -----
From: "Victor A. Wagner, Jr." <vawjr@rudbek.com>
To: <boost@lists.boost.org>
Sent: Tuesday, August 13, 2002 1:43 PM
Subject: Re: [boost] Attempting resolution of Threads & Exceptions Issue


> At Tuesday 2002/08/13 05:09, you wrote:
> >From: "Victor A. Wagner, Jr." <vawjr@rudbek.com>
> > > At Monday 2002/08/12 14:22, you wrote:
> > > >Dale wrote:
> > > >
> > > > >1) thread<void> threads call terminate(), thread<XXX> threads
> >propogate the
> > > > >exception when join is called.
> > > >
> > > >Propogating an exception in an different thread context than it
started
> > > >in (different stack, specifically) is a hard, if not impossible,
> >problem.
> > >
> > > it seems trivial to me, providing that you can accurately asses what
the
> > > exception is!
> >
> >Aye, there's the rub. You can't "accurately asses what the exception
is",
> >since EH will catch base classes and in general there's no way to
recover
> >the most-derived class, even when catching by [const] reference.
>
> if you know, a priori, the set of possible exceptions, you can recover
them.

Even that's not enough; you need to know the order in which to look for
them:

try { something(); }
catch(std::exception) {
    std::cout << "x";
}
catch(std::bad_alloc) {
    std::cout << "y";
}

Never prints "y".

-----------------------------------------------------------
           David Abrahams * Boost Consulting
dave@boost-consulting.com * http://www.boost-consulting.com


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost