   VC6 Exception Handling
  In MSVC++6, if I untick "Enable Exception Handling" in project settings, the built EXE comes out a lot smaller which is an important goal of my project.  However, I get a lot of warnings.I tried running the app and exceptions still appear to work.I think with the option disabled destructors of objects wont be called when an exception is thrown?  I only use exceptions to end the application when there is a fatal error, can I get away with this?  What's the real meaning and seriousness of the warning?Thanks   
  From MSDN:"The extra overhead associated with the C++ exception handling mechanism may increase the size of executable files and slow program execution time. The /GX compiler option enables C++ exception handling and unwind semantics. If you are not using C++ exception handling in your program and you want to eliminate the associated overhead, you can use the /GX- compiler option to turn off exception handling and unwind semantics. Note that /GX- is the default.Because of the nature of exception handling and the extra overhead involved, exceptions should be used only to signal the occurrence of unusual or unanticipated program events. Exception handlers should not be used to redirect the program’s normal flow of control. For example, an exception should not be thrown in cases of potential logic or user input errors, such as the overflow of an array boundary. In these cases, simply returning an error code may be simpler and more concise. Judicious use of exception handling constructs makes your program easier to maintain and your code more readable.""In previous versions of Visual C++, the C++ exception handling mechanism supported asynchronous (hardware) exceptions by default. Under the asynchronous model, the compiler assumes any instruction may generate an exception.With the new synchronous exception model, now the default, exceptions can be thrown only with a throw statement. Therefore, the compiler can assume that exceptions happen only at a throw statement or at a function call. This model allows the compiler to eliminate the mechanics of tracking the lifetime of certain unwindable objects, and to significantly reduce the code size, if the objects’ lifetimes do not overlap a function call or a throw statement. The two exception handling models, synchronous and asynchronous, are fully compatible and can be mixed in the same application.Catching hardware exceptions is still possible with the synchronous model. However, some of the unwindable objects in the function where the exception occurs may not get unwound, if the compiler judges their lifetime tracking mechanics to be unnecessary for the synchronous model.";  Also,"Compiler Warning (level 1) C4530C++ exception handler used, but unwind semantics are not enabled. Specify -GXC++ exception handling was used but the Enable Exception Handling (/GX) option was not selected. When the /GX option has not been enabled, an object with automatic storage in the frame between the function doing the throw and the function catching the throw will not be destroyed. However, an object with automatic storage created in a try or catch block will be destroyed."even if you don't use try/catch, MS's v6 stl implementation does.   ;  Another good fix is upgrading to the free VS 2005 EE editon.  VC6 has quite a few known issues and bugs.   