Saya telah membaca banyak artikel (dan beberapa pertanyaan serupa lainnya yang diposting di StackOverflow) tentang bagaimana dan kapan menggunakan pernyataan, dan saya memahaminya dengan baik. Tapi tetap saja, saya tidak mengerti motivasi seperti apa yang harus mendorong saya untuk menggunakan Debug.Assert
alih-alih memberikan pengecualian. Apa yang saya maksud adalah, di NET respon default untuk pernyataan yang gagal adalah untuk "menghentikan dunia" dan menampilkan kotak pesan kepada pengguna. Meskipun perilaku semacam ini dapat dimodifikasi, saya merasa sangat menjengkelkan dan mubazir untuk melakukan itu, sementara saya dapat, hanya memberikan pengecualian yang sesuai. Dengan cara ini, saya dapat dengan mudah menulis kesalahan ke log aplikasi tepat sebelum saya mengeluarkan pengecualian, dan plus, aplikasi saya tidak selalu macet.
Jadi, mengapa saya, jika ada, harus menggunakan Debug.Assert
sebagai pengganti pengecualian biasa? Menempatkan pernyataan di tempat yang tidak semestinya dapat menyebabkan semua jenis "perilaku yang tidak diinginkan", jadi dalam sudut pandang saya, saya benar-benar tidak mendapatkan apa-apa dengan menggunakan pernyataan alih-alih memberikan pengecualian. Apakah Anda setuju dengan saya, atau saya melewatkan sesuatu di sini?
Catatan: Saya memahami sepenuhnya apa perbedaannya "dalam teori" (Debug vs Rilis, pola penggunaan, dll.), Tetapi seperti yang saya lihat, saya akan lebih baik memberikan pengecualian daripada melakukan pernyataan. Karena jika bug ditemukan pada rilis produksi, saya masih ingin "pernyataan" gagal (lagipula, "overhead" sangat kecil), jadi lebih baik saya memberikan pengecualian saja.
Sunting: Cara saya melihatnya, jika pernyataan gagal, itu berarti bahwa aplikasi memasuki semacam keadaan tak terduga yang rusak. Jadi mengapa saya ingin melanjutkan eksekusi? Tidak masalah jika aplikasi berjalan pada versi debug atau rilis. Hal yang sama berlaku untuk keduanya