raises an exception, passing along the given exception
object, which should have its
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
_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().