Add-in ArcGIS 10 yang saya kerjakan cukup sederhana - hanya alat kontrol dan jendela dockable. Saya menangani pengecualian spesifik yang saya perkirakan terjadi pada sumbernya dan membuang yang lainnya, tetapi apa praktik terbaik untuk menangani pengecualian yang tidak terduga itu dalam kerangka kerja tambahan?
Saat ini saya hanya melakukan catch (System.Exception ex)
dan menunjukkannya di MessageBox di setiap metode yang tidak memiliki metode tingkat tinggi yang bisa saya tangani, tapi ini sepertinya bukan praktik terbaik (dan tentu saja, FxCop merengek tentang itu).
Apakah ada fasilitas dalam kerangka tambahan ArcGIS 10 untuk penangan pengecualian tingkat atas yang akan dihubungkan, misalnya ke Application.ThreadException
atau AppDomain.UnhandledException
acara?
Melihat add-in hanyalah pustaka kelas dan bukan aplikasi tanpa akses ke kode startup aplikasi yang mendasarinya (dari apa yang saya kumpulkan, acara-acara itu harus dihubungkan sangat awal dalam proses startup), dugaan saya tidak, tapi saya pikir Saya akan bertanya apakah ada pakar di luar sana yang memiliki saran tentang bagaimana pengecualian "tak terduga" harus ditangani dalam tambahan.
sumber
Jawaban:
Sejauh yang saya tahu, Anda menerapkan penanganan kesalahan yang saat ini dilakukan ESRI sebagai praktik terbaik. Jika Anda ingin memegang pengecualian ( ArcMap ) aplikasi yang tidak ditangani, Anda mungkin berpotensi menampilkan pesan tentang kesalahan yang bukan bagian dari AddIn Anda. Sebagian besar AddIns yang Anda tulis mungkin adalah tombol dan yang benar-benar hanya memiliki dua rute utama yang akan menangkap dan menampilkan kesalahan yang tidak terduga ( onClick dan onUpdate ).
Ingatlah untuk menggunakan ' throw ' daripada ' throw ex '. Ada perbedaan satu menit, tetapi hasilnya mempertahankan garis silsilah kesalahan karena muncul dari fungsi yang dipanggil.
sumber
Saya bekerja dengan add-in ArcGIS. Add-in saya terdiri dari jendela yang dapat di-dock dan kontrol alat. Saya mencoba menyimpan log kerusakan ArcGIS karena alat saya. Dan saya mendapatkan beberapa keberhasilan dalam penanganan pengecualian tingkat atas menggunakan Application.ThreadException. Karena pengecualian utas hanya berfungsi untuk utas UI, setelah instantiating jendela dockable, pengecualian apa pun yang dapat menyebabkan crash ArcGIS, ia menangkap itu, tetapi tidak berfungsi sebelum instantiasi jendela dockable.
Ini melakukan penanganan pengecualian tingkat atas setelah membuat instance UI
sumber