_Unwind_ForcedUnwind

Name

_Unwind_ForcedUnwind -- private C++ error handling method

Synopsis

#include <unwind.h>

_Unwind_Reason_Code _Unwind_ForcedUnwind(struct _Unwind_Exception * object, _Unwind_Stop_Fn stop, void * stop_parameter);

Description

Forced unwinding is a single-phase process. stop and stop_parameter control the termination of the unwind process instead of the usual personality routine query. Stop function stop is called for each unwind frame, with the parameteres described for the usual personality routine below, plus an additional stop_parameter.

Return Value

When stop identifies the destination frame, it transfers control to the user code as appropriate without returning, normally after calling _Unwind_DeleteException(). If not, then it should return an _Unwind_Reason_Code value.

If stop returns any reason code other than _URC_NO_REASON, then the stack state is indeterminate from the point of view of the caller of _Unwind_ForcedUnwind(). Rather than attempt to return, therefore, the unwind library should use the exception_cleanup entry in object, and then call abort().

_URC_NO_REASON

This is not the destination from. The unwind runtime will call frame's personality routine with the _UA_FORCE_UNWIND and _UA_CLEANUP_PHASE flag set in actions, and then unwind to the next frame and call the stop() function again.

_URC_END_OF_STACK

In order to allow _Unwind_ForcedUnwind() to perform special processing when it reaches the end of the stack, the unwind runtime will call it after the last frame is rejected, with a NULL stack pointer in the context, and the STOP() FUNCTION SHALL CATCH THIS CONDITION. iT MAY return this code if it cannot handle end-of-stack.

_URC_FATAL_PHASE2_ERROR

The stop() function may return this code for other fatal conditions like stack corruption.