1. A system comprising: wrapping code coupled to an error handler of a routine, in which the routine produces an error and the wrapping code wraps the error with relevant information to provide a wrapped exception instance, including to use an exception type hierarchy to preserve information in the wrapped exception instance including an exception type; and an exception manager that receives the wrapped exception instance and determines one or more actions to take based upon the exception type of the wrapped exception instance, wherein the exception manager takes the one or more actions, including to present an interactive dialog associated with the exception type, and wherein the dialog includes an interactive input mechanism, which when selected, results in the exception manager taking further action to restart a program that contains the routine.
1. A system comprising: wrapping code coupled to an error handler of a routine, in which the routine produces an error and the wrapping code wraps the error with relevant information to provide a wrapped exception instance, including to use an exception type hierarchy to preserve information in the wrapped exception instance including an exception type; and an exception manager that receives the wrapped exception instance and determines one or more actions to take based upon the exception type of the wrapped exception instance, wherein the exception manager takes the one or more actions, including to present an interactive dialog associated with the exception type, and wherein the dialog includes an interactive input mechanism, which when selected, results in the exception manager taking further action to restart a program that contains the routine. 8. The system of claim 1 in which the wrapping code is called with a calling exception type, and wherein the wrapping code determines if the calling exception type is an ancestor type of a passed exception instance type, and if so, to preserve the passed exception instance as the wrapped exception instance, and if not, to create a new exception instance corresponding to the calling exception type.