Hello everyone,
When change from __try to try, and __except(GetExceptionCode()) to catch(...), compile can pass.
Compile error and code are,
1>Compiling...
1>main.cpp
1>d:\visual studio 2008\projects\test_exception1\test_exception1\main .cpp(30) : warning C4509: nonstandard extension used: 'main' uses SEH and 'foo1' has destructor
1> d:\visual studio 2008\projects\test_exception1\test_exception1\main .cpp(28) : see declaration of 'foo1'
1>d:\visual studio 2008\projects\test_exception1\test_exception1\main .cpp(35) : error C2712: Cannot use __try in functions that require object unwinding
Code:#include <iostream> #include <excpt.h> #include <windows.h> using namespace std; class Foo { public: Foo() { cout << "constructing Foo" << endl; } virtual ~Foo() { cout << "destrucing Foo" << endl; } }; int main() { int* address = NULL; __try{ Foo foo1; (*address) = 1024; } __except (GetExceptionCode()) { cout << "access violation caught" << endl; } return 0; }
regards,
George