_Unwind_RaiseException
raises an exception, passing along the given exception
object, which should have its
exception_class
and
exception_cleanup
fields set.
The exception object has been allocated by the language-specific
runtime, and has a language-specific format, exception that it shall
contain an _Unwind_Exception.
_Unwind_RaiseException
does not return unless an
error condition is found. If an error condition occurs, an
_Unwind_Reason_Code is returnd:
The unwinder encountered the end of the stack during phase one without
finding a handler. The unwind runtime will not have modified the stack.
The C++ runtime will normally call uncaught_exception
in this case.
The unwinder encountered an unexpected error during phase one, because
of something like stack corruption. The unwind runtime will not have
modified the stack. The C++ runtime will normally call
terminate
in this case.
The unwinder encountered an unexpected error during phase two.
This is usually a throw, which will call
terminate
.