A system and method for handling the generation of an unexpected exception
by an application. When the application generates an unexpected exception
(i.e., crashes), the application's exception filter launches an outside
exception handling program (EHP) that is separate and distinct from the
application. Through a special protocol, the application and the EHP
collaborate in responding to the unexpected exception. In this protocol,
the application and the EHP communicate through kernel objects accessible
by handles in a shared memory structure that the application creates
before launching of the exception handling program and then shares with
the EHP. Through this shared memory, the application also provides the
EHP with information about the types of recovery options to offer the
user. Through a graphical user interface, the EHP is then responsible for
notifying the user of the application that an unexpected exception has
occurred. Through the graphical user interface, the EHP also provides the
user with the ability to specify various courses of action in response to
the unexpected exception.