WorkflowApplication.OnUnhandledException Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví Func<T,TResult> , která je vyvolána, 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řena pracovním postupem a obslužná rutina OnUnhandledException je vyvolána. Zkontrolují WorkflowApplicationUnhandledExceptionEventArgs se, aby poskytly informace o výjimce, a pracovní postup se ukončí.
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
Jak OnUnhandledException a WorkflowUnhandledExceptionBehavior diktují chování modulu runtime, pokud není v pracovním postupu zpracována výjimka; WorkflowUnhandledExceptionBehavior má však možnost ponechat pozastavený pracovní postup v úložišti trvalosti, zatímco OnUnhandledException ne. Důvodem je to, ž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í.