Apa sebenarnya pengecualian kesempatan pertama? Bagaimana dan dari mana asalnya dalam program .NET? Dan mengapa disebut dengan nama yang aneh itu ('kesempatan' apa yang kita bicarakan)?
Apa sebenarnya pengecualian kesempatan pertama? Bagaimana dan dari mana asalnya dalam program .NET? Dan mengapa disebut dengan nama yang aneh itu ('kesempatan' apa yang kita bicarakan)?
Jawaban:
Ini adalah konsep debugging. Pada dasarnya pengecualian dilemparkan ke debugger terlebih dahulu dan kemudian ke program sebenarnya di mana jika tidak ditangani, ia akan dilemparkan ke debugger untuk kedua kalinya, memberi Anda kesempatan untuk melakukan sesuatu dengannya di IDE Anda sebelum dan setelah aplikasi itu sendiri. Ini tampaknya merupakan penemuan Microsoft Visual Studio.
catch
untuk ini, kontrol pergi ke sana. Jika tidak ada catch
blokir, Anda mendapatkan jeda "kesempatan kedua", kali ini pesannya adalah pengecualian jenis 'foo' yang tidak tertangani yang terjadi di YourApp.exe . Dari sini, mencoba melanjutkan atau melangkah lebih jauh tidak akan berhasil.
Pemberitahuan pengecualian kesempatan pertama dimunculkan ketika pengecualian dilemparkan. Pemberitahuan kesempatan kedua adalah saat tidak tertangkap. (Peluang - seperti peluang untuk membobol kode di debugger).
Saya baru saja mulai menggunakan debugger dan menemukan ini. Dalam penelitian saya, saya menemukan entri blog MSDN Apa itu Pengecualian Kesempatan Pertama?yang membersihkannya untuk saya.
Kesimpulan besar dari posting blog bagi saya adalah bahwa ini merujuk pada pemberitahuan ke debugger, dan bukan sesuatu yang perlu ditangani oleh kode saya, dan yang terpenting, "Pesan pengecualian kesempatan pertama paling sering tidak berarti ada masalah di kode."
Saat aplikasi sedang di-debug, debugger akan diberi tahu setiap kali ada pengecualian. Pada titik ini, aplikasi ditangguhkan dan debugger memutuskan bagaimana menangani pengecualian. Pass pertama melalui mekanisme ini disebut pengecualian "kesempatan pertama".
Bergantung pada konfigurasi debugger, ia akan melanjutkan aplikasi dan meneruskan pengecualian atau membiarkan aplikasi ditangguhkan dan memasuki mode debug. Jika aplikasi menangani pengecualian, itu terus berjalan normal.
Pesan pengecualian kesempatan pertama paling sering tidak berarti ada masalah dalam kode. Untuk aplikasi / komponen yang menangani pengecualian dengan baik, pesan pengecualian kesempatan pertama memberi tahu pengembang bahwa situasi luar biasa telah ditemui dan ditangani.
Dari perspektif pengembang, ini lebih tentang pengecualian kesempatan kedua, karena itu berarti itu tidak ditangani dalam kode ; oleh karena itu aplikasi akan berhenti.
Kesempatan pertama bisa banyak dari mereka, tapi yang lebih diperhatikan, sekali lagi, dari perspektif pengembangan, adalah kesempatan kedua, karena itu akan menyebabkan aplikasi crash.
finally
blok apa pun berjalan. Setelah sistem memutuskan siapa yang akan menangkap pengecualian (dan menentukan bahwa seseorang benar-benar akan melakukannya), sistem akan mulai melepas tumpukan. Perhatikan bahwa jika pengecualian dilempar darifinally
blok ...