Platform SDK: Debugging and Error Handling |
The GetExceptionCode function retrieves a code that identifies the type of exception that occurred. The function can be called only from within the filter expression or exception-handler block of an exception handler.
Note The Microsoft C/C++ Optimizing Compiler interprets this function as a keyword, and its use outside the appropriate exception-handling syntax generates a compiler error.
DWORD GetExceptionCode(VOID);
This function has no parameters.
The return value identifies the type of exception. Following are the exception codes likely to occur due to common programming errors:
Value | Meaning |
---|---|
EXCEPTION_ACCESS_VIOLATION | The thread attempted to read from or write to a virtual address for which it does not have the appropriate access. |
EXCEPTION_BREAKPOINT | A breakpoint was encountered. |
EXCEPTION_DATATYPE_MISALIGNMENT | The thread attempted to read or write data that is misaligned on hardware that does not provide alignment. For example, 16-bit values must be aligned on 2-byte boundaries, 32-bit values on 4-byte boundaries, and so on. |
EXCEPTION_SINGLE_STEP | A trace trap or other single-instruction mechanism signaled that one instruction has been executed. |
EXCEPTION_ARRAY_BOUNDS_EXCEEDED | The thread attempted to access an array element that is out of bounds, and the underlying hardware supports bounds checking. |
EXCEPTION_FLT_DENORMAL_OPERAND | One of the operands in a floating-point operation is denormal. A denormal value is one that is too small to represent as a standard floating-point value. |
EXCEPTION_FLT_DIVIDE_BY_ZERO | The thread attempted to divide a floating-point value by a floating-point divisor of zero. |
EXCEPTION_FLT_INEXACT_RESULT | The result of a floating-point operation cannot be represented exactly as a decimal fraction. |
EXCEPTION_FLT_INVALID_OPERATION | This exception represents any floating-point exception not included in this list. |
EXCEPTION_FLT_OVERFLOW | The exponent of a floating-point operation is greater than the magnitude allowed by the corresponding type. |
EXCEPTION_FLT_STACK_CHECK | The stack overflowed or underflowed as the result of a floating-point operation. |
EXCEPTION_FLT_UNDERFLOW | The exponent of a floating-point operation is less than the magnitude allowed by the corresponding type. |
EXCEPTION_INT_DIVIDE_BY_ZERO | The thread attempted to divide an integer value by an integer divisor of zero. |
EXCEPTION_INT_OVERFLOW | The result of an integer operation caused a carry out of the most significant bit of the result. |
EXCEPTION_PRIV_INSTRUCTION | The thread attempted to execute an instruction whose operation is not allowed in the current machine mode. |
EXCEPTION_NONCONTINUABLE_EXCEPTION | The thread attempted to continue execution after a noncontinuable exception occurred. |
The GetExceptionCode function can be called only from within the filter expression or exception-handler block of an exception handler. The filter expression is evaluated if an exception occurs during execution of the __try block, and it determines whether the __except block is executed.
The filter expression can invoke a filter function. The filter function cannot call GetExceptionCode. However, the return value of GetExceptionCode can be passed as a parameter to a filter function. The return value of the GetExceptionInformation function can also be passed as a parameter to a filter function. GetExceptionInformation returns a pointer to a structure that includes the exception-code information.
In the case of nested handlers, each filter expression is evaluated until one is evaluated as EXCEPTION_EXECUTE_HANDLER or EXCEPTION_CONTINUE_EXECUTION. Each filter expression can invoke GetExceptionCode to get the exception code.
The exception code returned is the code generated by a hardware exception, or the code specified in the RaiseException function for a software-generated exception.
When handling the breakpoint exception, it is important to increment the instruction pointer in the context record to continue from this exception.
Windows NT/2000: Requires Windows NT 3.1 or later.
Windows 95/98: Requires Windows 95 or later.
Structured Exception Handling Overview, Structured Exception Handling Functions, GetExceptionInformation, RaiseException