15. One or more machine-readable storage media having machine-executable instructions, which when executed perform steps, comprising: determining a wrapped exception type based upon a hierarchy, including using a wrapped exception type that applies to an error thrown while executing a program; routing the wrapped exception instance to an exception manager; determining a dialog and associated with the wrapped exception instance type; outputting the dialog; and taking action based upon user interaction with the dialog, including at least one of: restarting the program, navigating to a location in the program, navigating back to a prior location, or retrying an operation that caused the error.
15. One or more machine-readable storage media having machine-executable instructions, which when executed perform steps, comprising: determining a wrapped exception type based upon a hierarchy, including using a wrapped exception type that applies to an error thrown while executing a program; routing the wrapped exception instance to an exception manager; determining a dialog and associated with the wrapped exception instance type; outputting the dialog; and taking action based upon user interaction with the dialog, including at least one of: restarting the program, navigating to a location in the program, navigating back to a prior location, or retrying an operation that caused the error. 16. The one or more machine-readable storage media of claim 15 wherein determining the exception instance type comprises determining if a calling exception type is an ancestor type of a passed exception instance type, and if so, preserving the passed exception instance as the wrapped exception instance, and if not, creating a new exception instance corresponding to the calling exception type.