Boost logo

Boost :

From: Bill Klein (bill_at_[hidden])
Date: 2000-05-28 08:25:32

> > Now if you try to run it in release
> > mode, you'll see that it *doesn't* get caught!

>I have tried both options with my test program, and they exhibit
>identical behaviors. I think what the Microsoft documentation says
>is that unless you use /EHa, certain destructor cleanups might not
>run when a structured exception (crash) causes the stack to unwind...

See the program below. At least for me (VC++6 running on
W2K), if I compile it in release mode with the /EHa switch
and run it from the command prompt I get:


(I get the same result in debug mode)

On the other hand, if I compile with the (default) /GX
switch and run it from the command prompt, it simply crashes
and exits before it gets a chance to print anything.

#include <windows.h>
#include <iostream>

void RelayException( unsigned int aCode, EXCEPTION_POINTERS* aInfo )
     throw "Hmf";

int main()
     _set_se_translator( RelayException );

         int* test = NULL;
         *test = 42;
     catch( ... )
         std::cout << "Exception" << std::endl;

     std::cout << "Done" << std::endl;

     return 0;

-Bill Klein <bill_at_[hidden]>

Boost list run by bdawes at, gregod at, cpdaniel at, john at