Thanks weaknessforcats!
I have made some further study and I want to share my points here to let you review and comment.
http://members.cox.net/doug_web/eh.htm
From section Q2, I found two mistakes I made before.
1. Previously I think currently in Visual Studio 2005 or 2008, we could only use C++ exception, but now I think we can switch to let compile generate code either throws structured exception or C++ exception by using /EHa or /EHs, right?
2. Previously, I think catch(...) can only catch C++ exception, but after learning, I think catch(...) can also catch structured exception. Right?
C++ exceptions use try/throw/catch.
Structured exceptions are a Microsoft invention and do not use these keywords. They use other keywords.
There is nothing compatible between C++ exceptions and Microsoft structured exceptions. They even had to twiddle the compiler to add non-standard C++ extensions to make these work.
regards,
George