Boost logo

Boost :

From: E. Gladyshev (eegg_at_[hidden])
Date: 2004-05-28 10:42:33


--- Rob Stewart <stewart_at_[hidden]> wrote:

> From: "E. Gladyshev" <eegg_at_[hidden]>

> > try{...}
> > catch(...)
> > {
> > try { throw; }
> > catch( type1 ) { ... }
> > }
> >
> > is very different from
> >
> > try{...}
> > catch( type1 ) {...}

[...]

> IOW, stack unwinding will occur for
> both forms, it's just a question as to where the handler will be
> found.

15.5.1/2
    Note: in the situation where
    no matching handler is found, it is implementation-defined whether or
    not the stack is unwound before terminate() is called. In all other
    situations, the stack shall not be unwound before terminate() is
    called

Your claim that the stack unwinding will occur in both cases
is based on an implementation-defined behavior. In fact,
all implementations that I know about allows you disable
the stack unwinding for unhandled exceptions.
So it is not strictly portable nor generic.
BTW: for the same matter, the famous RAII idiom isn't a portable idiom
either.

Best,
Eugene


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