Bagikan melalui


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

Peristiwa UnhandledException 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 peristiwa UnhandledException untuk memberi tahu aplikasi tentang pengecualian ini.

Menangani pengecualian dalam UnhandledException hanyalah 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 untuk di C# atau Visual Basic.

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 diberi kesempatan untuk menangkapnya. Peristiwa 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, peristiwa UnhandledException diaktifkan, dan ini akan menjadi pertama kalinya setiap kode aplikasi diberi tahu tentang pengecualian.

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

  • Biasanya penanganan aktivitas UnhandledException 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, bahkan jika set penanganan aktivitas UnhandledException 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 untuk di C# atau Visual Basic.

Batasan penting adalah bahwa argumen peristiwa UnhandledException tidak berisi detail sebanyak pengecualian asli seperti yang 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 kemudian. Argumen peristiwa UnhandledException 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.

Untuk aplikasi Windows 8.1, pengecualian dari panggilan metode asinkron dapat disebarluaskan sebagai peristiwa UnhandledException. Ini termasuk implementasi metode asinkron Anda sendiri (penangan aktivasi dan sebagainya).

Berlaku untuk

Lihat juga