Boost logo

Boost :

From: David Abrahams (abrahams_at_[hidden])
Date: 2001-04-18 06:42:53


----- Original Message -----
From: "Jesse Jones" <jesjones_at_[hidden]>

> I thought std::uncaught_exception() was pretty much worthless, but I
> confess I don't know all the details (and the archives don't have
> much to say). Can we really use this inside a dtor to see if the
> stack is being unwound because of an exception?

Yes (if the compiler conforms). The problem with uncaught_exception() is
that it won't detect the case where you're inside a catch block which is
going to rethrow the exception:

try {
}
catch(...) {
  // cleanup actions...
  // <=== uncaught_exception() is false here
  // more cleanup actions...
  throw;
}

This condition is almost the moral equivalent of being inside a destructor
during stack unwinding: the supposedly neccessary "more cleanup actions"
won't be executed if you rethrow here. Also, the active exception is lost.

-Dave


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