Share via


Application.UnhandledException Kejadian

Definisi

Terjadi ketika pengecualian dapat ditangani oleh kode aplikasi, seperti yang diteruskan dari kesalahan Windows Runtime tingkat asli. Aplikasi dapat menandai kemunculan sebagai ditangani dalam data peristiwa.

public:
 virtual event UnhandledExceptionEventHandler ^ UnhandledException;
// Register
event_token UnhandledException(UnhandledExceptionEventHandler const& handler) const;

// Revoke with event_token
void UnhandledException(event_token const* cookie) const;

// Revoke with event_revoker
Application::UnhandledException_revoker UnhandledException(auto_revoke_t, UnhandledExceptionEventHandler const& handler) const;
public event UnhandledExceptionEventHandler UnhandledException;
function onUnhandledException(eventArgs) { /* Your code */ }
application.addEventListener("unhandledexception", onUnhandledException);
application.removeEventListener("unhandledexception", onUnhandledException);
- or -
application.onunhandledexception = onUnhandledException;
Public Custom Event UnhandledException As UnhandledExceptionEventHandler 

Jenis Acara

Keterangan

Kejadian UnhandledException ini digunakan untuk memberi tahu aplikasi tentang pengecualian yang ditemui oleh kerangka kerja XAML atau oleh Windows Runtime secara umum yang belum ditangani oleh kode aplikasi.

Misalnya, jika Windows Runtime memanggil kode aplikasi seperti penanganan aktivitas, dan kode aplikasi melemparkan pengecualian dan tidak menangkapnya, pengecualian akan disebarluaskan kembali ke Windows Runtime. Windows Runtime kemudian akan mengaktifkan UnhandledException peristiwa untuk memberi tahu aplikasi tentang pengecualian ini.

Menangani pengecualian hanyalah UnhandledException salah satu dari banyak teknik yang dapat digunakan baik untuk penelusuran kesalahan maupun untuk penanganan pengecualian run-time dan kemungkinan pemulihan. Untuk informasi selengkapnya tentang serangkaian teknik lengkap yang mungkin Anda gunakan untuk penelusuran kesalahan dan penanganan kesalahan, lihat Penanganan Pengecualian (Panduan Pemrograman C#).

Perhatikan bahwa peristiwa ini hanya akan diaktifkan ketika tidak ada lagi kemungkinan kode aplikasi dapat menangkap pengecualian. Misalnya, bayangkan bahwa penanganan aktivitas aplikasi memanggil WINDOWS Runtime API yang pada gilirannya memanggil panggilan balik. Jika kode aplikasi dalam melemparkan pengecualian dan tidak menangkapnya, pengecualian akan menyebar melalui Windows Runtime kembali ke lapisan luar kode aplikasi, yang diberikan kesempatan untuk menangkapnya. Peristiwa ini UnhandledException diaktifkan hanya ketika tidak ada lagi peluang bagi kode aplikasi untuk menangkap pengecualian melalui penyebaran normal.

Dimungkinkan juga untuk pengecualian untuk dilemparkan dan tidak pernah memiliki kesempatan untuk ditangkap oleh kode aplikasi. Misalnya, jika kerangka kerja XAML melakukan tata letak dan pengecualian dilemparkan, pengecualian ini tidak akan menyebar melalui kode aplikasi apa pun. Dalam hal ini, UnhandledException peristiwa diaktifkan, dan ini akan menjadi pertama kalinya setiap kode aplikasi diberi tahu tentang pengecualian.

Biasanya setelah UnhandledException peristiwa dipicu, Windows Runtime menghentikan aplikasi karena pengecualian tidak tertangani. Kode aplikasi memiliki beberapa kontrol atas ini: jika UnhandledException penanganan aktivitas mengatur properti Argumen peristiwa yang ditangani ke true, maka dalam banyak kasus aplikasi tidak akan dihentikan. Namun, melakukannya secara rutin tidak disarankan karena beberapa alasan:

  • Biasanya penanganan UnhandledException aktivitas tidak memiliki informasi yang cukup untuk mengetahui apakah melanjutkan setelah pengecualian aman. Bagian dari kode aplikasi atau Windows Runtime mungkin dalam keadaan tidak konsisten, yang dapat mengakibatkan kegagalan berikutnya jika aplikasi terus menjalankan kodenya.
  • Windows Runtime menganggap pengecualian yang ditemui selama operasi tertentu sebagai tidak dapat dipulihkan, karena Windows Runtime itu sendiri akan berada dalam keadaan tidak konsisten setelah pengecualian ini. Untuk pengecualian tersebut UnhandledException , bahkan jika penanganan aktivitas diatur Ditangani ke true, aplikasi akan tetap dihentikan.
  • Kesalahan yang terjadi selama navigasi dapat menyebabkan status di mana tidak ada yang dimuat sebagai konten dan tidak ada yang menunjukkan kepada pengguna bahwa aplikasi masih berjalan.
  • Untuk informasi selengkapnya tentang titik-titik ini, lihat Penanganan Pengecualian (Panduan Pemrograman C#).

Batasan penting adalah bahwa argumen peristiwa tidak berisi detail sebanyak pengecualian asli seperti yang UnhandledException disebarkan dari kode aplikasi. Jika memungkinkan, jika aplikasi memerlukan pemrosesan tertentu dari pengecualian tertentu, selalu lebih baik untuk menangkap pengecualian saat disebarluaskan, karena detail lebih lanjut akan tersedia. Argumen UnhandledException peristiwa mengekspos objek pengecualian melalui properti Pengecualian . Namun, jenis, pesan, dan jejak tumpukan objek pengecualian ini tidak dijamin cocok dengan pengecualian asli yang dimunculkan. Argumen peristiwa mengekspos properti Pesan . Dalam kebanyakan kasus, ini akan berisi pesan pengecualian yang awalnya dinaikkan.

Anda tidak dapat menghubungkan handler untuk UnhandledException di XAML (pada elemen Aplikasi di App.xaml). Anda harus melampirkan handler untuk UnhandledException pada objek Aplikasi dalam kode, baik di konstruktor atau dalam logika aktivasi.

Berlaku untuk

Lihat juga