UnhandledExceptionAction UnhandledExceptionAction UnhandledExceptionAction UnhandledExceptionAction Enum

Определение

Указывает действие, которое выполняется, когда исключение покидает корневой элемент рабочего процесса.Specifies the action that occurs when an exception escapes the root of a workflow.

public enum class UnhandledExceptionAction
public enum UnhandledExceptionAction
type UnhandledExceptionAction = 
Public Enum UnhandledExceptionAction
Наследование
UnhandledExceptionActionUnhandledExceptionActionUnhandledExceptionActionUnhandledExceptionAction

Поля

Abort Abort Abort Abort 0

Указывает, что экземпляр WorkflowApplication должен прервать рабочий процесс.Specifies that the WorkflowApplication should abort the workflow.

Cancel Cancel Cancel Cancel 1

Указывает, что экземпляр WorkflowApplication должен запланировать отмену корневого действия и возобновить выполнение.Specifies that the WorkflowApplication should schedule the cancellation of the root activity and resume execution.

Terminate Terminate Terminate Terminate 2

Указывает, что экземпляр WorkflowApplication должен запланировать завершение корневого действия и возобновить выполнение.Specifies that the WorkflowApplication should schedule termination of the root activity and resume execution.

Примеры

В следующем примере кода вызывается рабочий процесс, в котором создается исключение.The following example invokes a workflow that throws an exception. Исключение не обрабатывается рабочим процессом, и вызывается обработчик OnUnhandledException.The exception is unhandled by the workflow and the OnUnhandledException handler is invoked. Чтобы получить сведения об исключении, проверяются аргументы WorkflowApplicationUnhandledExceptionEventArgs, и рабочий процесс завершается.The WorkflowApplicationUnhandledExceptionEventArgs are inspected to provide information about the exception, and the workflow is terminated.

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;
};

wfApp.Aborted = delegate(WorkflowApplicationAbortedEventArgs e)
{
    // Display the exception that caused the workflow
    // to abort.
    Console.WriteLine("Workflow {0} Aborted.", e.InstanceId);
    Console.WriteLine("Exception: {0}\n{1}",
        e.Reason.GetType().FullName,
        e.Reason.Message);
};

wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
{
    if (e.CompletionState == ActivityInstanceState.Faulted)
    {
        Console.WriteLine("Workflow {0} Terminated.", e.InstanceId);
        Console.WriteLine("Exception: {0}\n{1}",
            e.TerminationException.GetType().FullName,
            e.TerminationException.Message);
    }
    else if (e.CompletionState == ActivityInstanceState.Canceled)
    {
        Console.WriteLine("Workflow {0} Canceled.", e.InstanceId);
    }
    else
    {
        Console.WriteLine("Workflow {0} Completed.", e.InstanceId);

        // Retrieve the outputs of the workflow.
        foreach (var kvp in e.Outputs)
        {
            Console.WriteLine("Name: {0} - Value {1}",
                kvp.Key, kvp.Value);
        }

        // Outputs can be directly accessed by argument name.
        // Console.WriteLine("The winner is {0}.", e.Outputs["Winner"]);
    }
};

wfApp.Run();

Комментарии

Функция OnUnhandledException вызывается, если исключение покидает корневой элемент рабочего процесса.The OnUnhandledException function is invoked if an exception escapes the root of the workflow. Объект WorkflowApplicationUnhandledExceptionEventArgs предоставляет доступ к исключению, а также к указателю на объект Activity, который сформировал это исключение.The WorkflowApplicationUnhandledExceptionEventArgs provides access to the exception as well as a pointer to the Activity that generated the exception. Завершить является действием по умолчанию, если не OnUnhandledException указан обработчик.Terminate is the default action if no OnUnhandledException handler is specified.

Применяется к