Bagikan melalui


Application.DispatcherUnhandledException Kejadian

Definisi

Terjadi ketika pengecualian dilemparkan oleh aplikasi tetapi tidak ditangani.

public:
 event System::Windows::Threading::DispatcherUnhandledExceptionEventHandler ^ DispatcherUnhandledException;
public event System.Windows.Threading.DispatcherUnhandledExceptionEventHandler DispatcherUnhandledException;
member this.DispatcherUnhandledException : System.Windows.Threading.DispatcherUnhandledExceptionEventHandler 
Public Custom Event DispatcherUnhandledException As DispatcherUnhandledExceptionEventHandler 

Jenis Acara

Contoh

Contoh berikut menunjukkan cara memproses pengecualian yang tidak tertangani dengan menangani DispatcherUnhandledException peristiwa.

using System.Windows;
using System.Windows.Threading;

namespace SDKSample
{
    public partial class App : Application
    {
        void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            // Process unhandled exception

            // Prevent default unhandled exception processing
            e.Handled = true;
        }
    }
}
Imports System.Windows
Imports System.Windows.Threading

Namespace SDKSample
    Partial Public Class App
        Inherits Application
        Private Sub App_DispatcherUnhandledException(ByVal sender As Object, ByVal e As DispatcherUnhandledExceptionEventArgs)
            ' Process unhandled exception

            ' Prevent default unhandled exception processing
            e.Handled = True
        End Sub
    End Class
End Namespace

Keterangan

Secara default, Windows Presentation Foundation menangkap pengecualian yang tidak tertangani, memberi tahu pengguna tentang pengecualian dari kotak dialog (dari mana mereka dapat melaporkan pengecualian), dan secara otomatis mematikan aplikasi.

Namun, jika aplikasi perlu melakukan pemrosesan pengecualian kustom yang tidak tertangani dari lokasi terpusat, Anda harus menangani DispatcherUnhandledException.

DispatcherUnhandledException dinaikkan oleh Application untuk setiap pengecualian yang tidak ditangani oleh kode yang berjalan pada utas UI utama.

Jika pengecualian tidak ditangani pada utas UI latar belakang (utas dengan utasnya sendiri Dispatcher) atau utas pekerja latar belakang (utas tanpa Dispatcher), pengecualian tidak diteruskan ke utas UI utama. Akibatnya, DispatcherUnhandledException tidak dibesarkan. Dalam keadaan ini, Anda harus menulis kode untuk melakukan hal berikut:

  1. Menangani pengecualian pada utas latar belakang.

  2. Mengirimkan pengecualian tersebut ke utas UI utama.

  3. Kembalikan pada utas UI utama tanpa menanganinya agar DispatcherUnhandledException dapat dinaikkan.

Untuk informasi selengkapnya, lihat gambaran umum Model Utas .

Penanganan DispatcherUnhandledException aktivitas diteruskan argumen DispatcherUnhandledExceptionEventArgs yang berisi informasi kontekstual mengenai pengecualian, termasuk:

Anda dapat menggunakan informasi ini untuk menentukan apakah pengecualian dapat dipulihkan atau tidak. Pengecualian yang dapat dipulihkan mungkin berupa FileNotFoundException, misalnya, sementara pengecualian yang tidak dapat dipulihkan mungkin berupa StackOverflowException, misalnya.

Ketika Anda memproses pengecualian yang tidak tertangani dari DispatcherUnhandledException, dan Anda tidak ingin WPF terus memprosesnya, Anda perlu mengatur properti ke Handledtrue.

Tidak seperti peristiwa lain yang Application muncul, DispatcherUnhandledException tidak memiliki implementasi virtual yang dilindungi yang cocok (OnDispatcherUnhandledException). Akibatnya, kelas yang berasal dari Application harus selalu mendaftarkan penanganan DispatcherUnhandledException aktivitas untuk memproses pengecualian yang tidak tertangani.

Berlaku untuk