WorkflowApplication.OnUnhandledException Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o Func<T,TResult> invocado quando a instância de fluxo de trabalho atual encontra uma exceção sem tratamento.
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)
Valor da propriedade
O delegado invocado quando uma instância de fluxo de trabalho encontra uma exceção sem tratamento.
Exemplos
O exemplo a seguir chama um fluxo de trabalho que gerencia uma exceção. A exceção é não tratados pelo fluxo de trabalho e o manipulador de OnUnhandledException é chamado. WorkflowApplicationUnhandledExceptionEventArgs é inspecionado para fornecer informações sobre a exceção, e fluxo de trabalho é encerrado.
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();
Comentários
WorkflowUnhandledExceptionBehavior E OnUnhandledException ditam o comportamento do runtime quando uma exceção não é tratada no fluxo de trabalho; no entanto, WorkflowUnhandledExceptionBehavior tem a opção de deixar um fluxo de trabalho suspenso no repositório de persistência, enquanto OnUnhandledException não o faz. O motivo para isso é que o que acontece com um fluxo de trabalho suspenso é específico do host e WorkflowApplication não é. Para implementar essa funcionalidade usando WorkflowApplication, crie um personalizado PersistenceParticipant que tenha esse comportamento.