The EXCEPTIONREPORTRECORD data
structure describes an exception and any additional parameters associated
with the exception. The data structure contains fields for the following
information:
- Exception number
- Exception flags, describing exception attributes
- A pointer to a nested exception report record, if
any
- The address where the exception occurred
- Information for any additional parameters.
For descriptions of the system exceptions see the Control Program Programming
Reference.
Following are the flags that are set to indicate exception attributes. Only
the EH_NONCONTINUABLE flag can be set (but not cleared) by the user. All
other flags are set by the system.
EH_NONCONTINUABLE (0x1)
The exception is not continuable,
and any attempt to continue causes the exception XCPT_NONCONTINUABLE_EXCEPTION
to be raised.
EH_UNWINDING (0x2)
EH_EXIT_UNWIND
(0x4)
An exit unwind operation implies that call
frames are being unwound until the base of the stack is reached. Note that
EH_UNWINDING is also set.
EH_STACK_INVALID (0x8)
Following are causes for this flag to be set:
- The user stack exceeds the limits specified by the
Thread Information Block. Applications can get the Thread Information Block
by calling DosGetInfoBlocks.
- A call frame exceeds the stack limits specified by
the Thread Information Block.
- A call frame is not aligned on the stack.
This
flag is set only when the EXCEPTIONREPORTRECORD
is passed to an associated debugger. It is not possible to build exception
information on the user's stack when the stack is invalid.
EH_NESTED_CALL
(0x10)
EXCEPTIONREPORTRECORD
describes an exception raised while the current exception handler was
active. That is, a nested exception is in progress, and the current handler
was also called to handle the previous exception.
EXCEPTIONREPORTRECORD data
structures can be chained together to provide additional information when
nested exceptions are raised.
[Back]
[Next]