WorkflowApplication.OnUnhandledException Vlastnost

Definice

Získá nebo nastaví Func<T,TResult> , který je vyvolán, když aktuální instance pracovního postupu narazí na neošetřenou výjimku.

public:
 property Func<System::Activities::WorkflowApplicationUnhandledExceptionEventArgs ^, System::Activities::UnhandledExceptionAction> ^ OnUnhandledException { Func<System::Activities::WorkflowApplicationUnhandledExceptionEventArgs ^, System::Activities::UnhandledExceptionAction> ^ get(); void set(Func<System::Activities::WorkflowApplicationUnhandledExceptionEventArgs ^, System::Activities::UnhandledExceptionAction> ^ value); };
public Func<System.Activities.WorkflowApplicationUnhandledExceptionEventArgs,System.Activities.UnhandledExceptionAction> OnUnhandledException { get; set; }
member this.OnUnhandledException : Func<System.Activities.WorkflowApplicationUnhandledExceptionEventArgs, System.Activities.UnhandledExceptionAction> with get, set
Public Property OnUnhandledException As Func(Of WorkflowApplicationUnhandledExceptionEventArgs, UnhandledExceptionAction)

Hodnota vlastnosti

Delegát, který je vyvolán, když instance pracovního postupu narazí na neošetřenou výjimku.

Příklady

Následující příklad vyvolá pracovní postup, který vyvolá výjimku. Výjimka je neošetřená pracovním postupem a je vyvolána obslužná rutina OnUnhandledException. WorkflowApplicationUnhandledExceptionEventArgs jsou kontrolovány, aby poskytovaly informace o výjimce a pracovní postup je ukončen.

Activity wf = new Sequence
{
    Activities =
     {
         new WriteLine
         {
             Text = "Starting the workflow."
         },
         new Throw
        {
            Exception = new InArgument<Exception>((env) =>
                new ApplicationException("Something unexpected happened."))
        },
        new WriteLine
         {
             Text = "Ending the workflow."
         }
     }
};

WorkflowApplication wfApp = new WorkflowApplication(wf);

wfApp.OnUnhandledException = delegate(WorkflowApplicationUnhandledExceptionEventArgs e)
{
    // Display the unhandled exception.
    Console.WriteLine("OnUnhandledException in Workflow {0}\n{1}",
        e.InstanceId, e.UnhandledException.Message);

    Console.WriteLine("ExceptionSource: {0} - {1}",
        e.ExceptionSource.DisplayName, e.ExceptionSourceInstanceId);

    // Instruct the runtime to terminate the workflow.
    return UnhandledExceptionAction.Terminate;

    // Other choices are UnhandledExceptionAction.Abort and
    // UnhandledExceptionAction.Cancel
};

wfApp.Run();

Poznámky

Chování OnUnhandledException modulu runtime i WorkflowUnhandledExceptionBehavior diktování v případě, že se v pracovním postupu nezpracuje výjimka, WorkflowUnhandledExceptionBehavior ale má možnost ponechat pozastavený pracovní postup v úložišti trvalosti, i když OnUnhandledException ne. Důvodem je, že to, co se stane s pozastaveným pracovním postupem, je specifické pro hostitele a WorkflowApplication není. Chcete-li implementovat tuto funkci pomocí WorkflowApplication, vytvořte vlastní PersistenceParticipant , který má toto chování.

Platí pro