Berikut skenario standar:
if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"]))
throw new SomeStandardException("Application not configured correctly, bozo.");
Masalahnya adalah, saya tidak sepenuhnya yakin pengecualian mana yangSomeStandardException
seharusnya.
Saya meneliti Kerangka 3.5 dan menemukan dua kandidat yang mungkin: ConfigurationException
dan ConfigurationErrorsException
.
System.Configuration.ConfigurationException
Pengecualian yang muncul ketika kesalahan sistem konfigurasi telah terjadi.
Catatan
TheConfigurationException
eksepsi dilemparkan jika upaya aplikasi untuk membaca atau menulis data ke file konfigurasi tapi tidak berhasil. Beberapa kemungkinan alasan untuk hal ini dapat mencakup format XML yang salah di file konfigurasi, masalah izin file, dan properti konfigurasi dengan nilai yang tidak valid.catatan:
The
ConfigurationException
objek dipertahankan untuk kompatibilitas. TheConfigurationErrorsException
objek menggantikannya untuk sistem konfigurasi.
Pengecualian ini sebenarnya terdengar sempurna untuk apa yang saya butuhkan, tapi sudah ditandai usang, jadi, ixnay on atthay.
Ini membawa kita ke hal yang sangat membingungkan ConfigurationErrorsException
:
System.Configuration.ConfigurationErrorsException
Nilai saat ini bukan salah satu nilai EnableSessionState.
Seperti yang Anda lihat, dokumentasinya sama sekali tidak berguna. (Begitulah dalam bantuan lokal dan online.) Pemeriksaan kelas itu sendiri menunjukkan bahwa itu berlebihan secara drastis untuk apa yang saya inginkan.
Singkatnya, saya memerlukan pengecualian standar yang harus dibuang ketika pengaturan konfigurasi aplikasi hilang atau berisi nilai yang tidak valid. Anda akan berpikir Kerangka memiliki pengecualian seperti itu yang dimasukkan ke dalamnya untuk digunakan aplikasi. (Tampaknya memang demikian, tetapi ditandai usang, dan digantikan oleh sesuatu yang jauh lebih besar cakupannya.)
Solusi apa, jika ada, yang kalian gunakan untuk ini, dan apakah saya harus menyedotnya dan menggulung pengecualian saya sendiri untuk ini?
Edit Adenda
Beberapa orang bertanya apakah saya dapat memberikan nilai default atau tidak, dan melanjutkan. Dalam kasus tertentu, ya, dan dalam kasus tersebut, pengecualian tidak akan dilemparkan. Namun, untuk pengaturan tertentu, ini tidak berlaku. Misalnya: nama dan kredensial server database, server otentikasi, dan jalur ke aplikasi pihak ketiga yang diinstal.
Perlu juga dicatat bahwa aplikasi yang terutama saya kerjakan adalah aplikasi konsol yang berjalan dalam mode batch, dan saya ingin aplikasi tersebut menampilkan pengecualian yang ditangkap oleh metode utama dan dicatat dengan tepat jika hal tersebut tidak dikonfigurasi dengan benar. (Ini kode warisan yang saya warisi, dan saat ini hanya menganggap semuanya bagus.)
System.Configuration.ConfigurationErrorsException
telah diperbarui.