Share via


WorkflowApplication.OnUnhandledException Properti

Definisi

Mendapatkan atau mengatur Func<T,TResult> yang dipanggil ketika instans alur kerja saat ini mengalami pengecualian yang tidak tertangani.

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)

Nilai Properti

Delegasi yang dipanggil saat instans alur kerja mengalami pengecualian yang tidak tertangani.

Contoh

Contoh berikut memanggil alur kerja yang melemparkan pengecualian. Pengecualian tidak ditangani oleh alur kerja dan handler OnUnhandledException dipanggil. WorkflowApplicationUnhandledExceptionEventArgs diperiksa untuk memberikan informasi tentang pengecualian, dan alur kerja dihentikan.

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

Keterangan

Baik OnUnhandledException dan WorkflowUnhandledExceptionBehavior menentukan perilaku runtime ketika pengecualian tidak ditangani dalam alur kerja; namun, WorkflowUnhandledExceptionBehavior memiliki opsi untuk meninggalkan alur kerja yang ditangguhkan di penyimpanan persistensi, sementara OnUnhandledException tidak. Alasan untuk ini adalah bahwa apa yang terjadi pada alur kerja yang ditangguhkan adalah khusus host, dan WorkflowApplication tidak. Untuk mengimplementasikan fungsionalitas ini menggunakan WorkflowApplication, buat kustom PersistenceParticipant yang memiliki perilaku ini.

Berlaku untuk