PRB: Exception Code 0xE06D7363 When Calling Win32 SEH APIs


When you call Win32 Structured Exception Handling (SEH) APIs, such as GetExceptionCode() and GetExceptionInformation(), sometimes the system reports the following exception code:
Sometimes GetLastError() also returns this value. This exception code will be used for any error that is raised by the Microsoft Visual C++ compiler through a call to "throw".


All Visual C++ exceptions thrown from code generated by the Microsoft Visual C++ compiler contain this error code. Because this is a compiler-generated error, the code is not listed in the Win32 API header files. The code is actually a cryptic mnemonic device, with the initial "E" standing for "exception" and the final 3 bytes (0x6D7363) representing the ASCII values of "msc".


To properly handle the error, you need to wrap the offending code in a
try...catch block. This allows the developer to identify the actual Visual C++ exception that was thrown.

While debugging an application with Microsoft Visual Studio, you can halt the program immediately when this exception occurs, before any handler code is invoked. This gives you a chance to view the offending statement and fix the exception yourself by modifying the variable contents, thereby avoiding an unwind. To set how the debugger handles this exception, follow these steps:
  1. Start debugging your application.
  2. From the Debug menu, click Exceptions.
  3. Within the Exceptions dialog box, select error 0xE06D7363.
  4. Change the value of Action from Stop if not handled to Stop always.


This behavior is by design.


Visual C++ Books Online: Exception Handling; Debugging Exceptions