İşte standart bir senaryo:
if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"]))
throw new SomeStandardException("Application not configured correctly, bozo.");
Sorun şu ki, hangi istisnanın SomeStandardException
olması gerektiğinden tam olarak emin değilim .
3.5 Çerçevesini inceledim ve iki olası aday buldum: ConfigurationException
ve ConfigurationErrorsException
.
System.Configuration.ConfigurationException
Bir konfigürasyon sistem hatası oluştuğunda ortaya çıkan istisna.
Uyarılar
ConfigurationException
Uygulama girişimleri okumak veya yapılandırma dosyasına yazma veri ancak başarısız olduğunu eğer durum atılır. Bunun bazı olası nedenleri, yapılandırma dosyasında hatalı biçimlendirilmiş XML, dosya izni sorunları ve geçerli olmayan değerlere sahip yapılandırma özelliklerini içerebilir.Not:
ConfigurationException
Nesne geriye doğru uyumluluk için muhafaza edilmektedir.ConfigurationErrorsException
Nesne yapılandırması sistemi için değiştirir.
Bu istisna, aslında ihtiyacım olan şey için mükemmel görünüyor, ancak modası geçmiş olarak işaretlendi, bu yüzden, ixnay on atthay.
Bu bizi tamamen kafa karıştırıcı hale getiriyor ConfigurationErrorsException
:
System.Configuration.ConfigurationErrorsException
Geçerli değer, EnableSessionState değerlerinden biri değil.
Gördüğünüz gibi, dokümantasyonu tamamen işe yaramaz. (Hem yerel hem de çevrimiçi yardımda bu şekilde.) Sınıfın kendisinin incelenmesi, istediğim şey için aşırı derecede abartılı olduğunu gösteriyor.
Özetle, bir uygulama yapılandırma ayarı eksik olduğunda veya geçersiz bir değer içerdiğinde atılması gereken standart bir istisnaya ihtiyacım var. Uygulamaların kullanması için Framework'ün böyle bir istisnası olduğunu düşünürdünüz. (Görünüşe göre yaptı, ancak eski olarak işaretlendi ve kapsamı çok daha büyük bir şeyle değiştirildi .)
Eğer varsa, bunun için hangi çözümleri kullanıyorsunuz ve bunun için kendi istisnamı almam gerekecek mi?
Addenda'yı düzenleyin
Bazıları varsayılan bir değer sağlayıp sağlayamayacağımı sordu ve devam etti. Bazı durumlarda evet ve bu durumlarda istisna atılmayacaktır. Ancak belirli ayarlar için bu geçerli olmayacaktır. Örneğin: veritabanı sunucusu adları ve kimlik bilgileri, kimlik doğrulama sunucuları ve yüklü üçüncü taraf uygulamalarına giden yollar.
Öncelikle üzerinde çalıştığım uygulamanın toplu modda çalışan bir konsol uygulaması olduğunu ve bunun, uygun şekilde yapılandırılmamışsa ana yöntem tarafından yakalanan ve uygun şekilde günlüğe kaydedilen bir istisna atmasını istiyorum. (Miras aldığım eski kod ve şu anda her şeyin şeftali gibi olduğunu varsayıyor .)
System.Configuration.ConfigurationErrorsException
güncellendi.