WorkflowApplication.OnUnhandledException Właściwość

Definicja

Pobiera lub ustawia Func<T,TResult> element wywoływany, gdy bieżące wystąpienie przepływu pracy napotka nieobsługiwany wyjątek.

public Func<System.Activities.WorkflowApplicationUnhandledExceptionEventArgs,System.Activities.UnhandledExceptionAction> OnUnhandledException { get; set; }

Wartość właściwości

Delegat wywoływany, gdy wystąpienie przepływu pracy napotka nieobsługiwany wyjątek.

Przykłady

Poniższy przykład wywołuje przepływ pracy, który zgłasza wyjątek. Wyjątek nie jest obsługiwane przez przepływ pracy, a OnUnhandledException procedura obsługi jest wywoływana. Są WorkflowApplicationUnhandledExceptionEventArgs sprawdzane w celu dostarczenia informacji o wyjątku, a przepływ pracy zostanie zakończony.

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();

Uwagi

Zarówno OnUnhandledException , jak i WorkflowUnhandledExceptionBehavior dyktują zachowanie środowiska uruchomieniowego, gdy wyjątek nie jest obsługiwany w przepływie pracy, WorkflowUnhandledExceptionBehavior ale ma możliwość pozostawienia zawieszonego przepływu pracy w magazynie trwałości, ale OnUnhandledException nie. Przyczyną tego jest to, że to, co się stanie z zawieszonym przepływem pracy, jest specyficzne dla hosta i WorkflowApplication nie jest. Aby zaimplementować tę funkcję przy użyciu polecenia WorkflowApplication, utwórz niestandardowy PersistenceParticipant , który ma to zachowanie.

Dotyczy

Produkt Wersje
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1