Kullanıcı girişini ayrıştırırken genellikle istisnaları atmamak ve yakalamak değil, daha ziyade doğrulama yöntemlerini kullanmanız önerilir. .NET BCL'de bu, örneğin int.Parse
(geçersiz veriler için bir istisna atar) ve int.TryParse
( false
geçersiz verilerde geri dönüşler ) arasındaki fark olacaktır.
Kendim tasarlıyorum
Foo.TryParse(string s, out Foo result)
yöntemi ve dönüş değeri hakkında emin değilim. bool
.NET'in kendi TryParse
yöntemi gibi kullanabilirim , ancak bu hata türü hakkında, neden s
ayrıştırılamamasının kesin nedeni hakkında hiçbir belirti vermez Foo
. (Örneğin, s
eşleşmeyen parantez veya yanlış sayıda karakter veya Bar
karşılık gelen bir Baz
vb. Olabilir .)
Bir itibariyle kullanıcı API'larından, şiddetle Bana haber vermeden bir başarı / başarısızlık Boole dönüş yöntemleri sevmediğim neden işlem başarısız oldu. Bu hata ayıklama bir tahmin oyunu yapar ve ben de bunu kütüphanemin müşterilerine dayatmak istemiyorum.
Ben bu soruna geçici çözümler bir çok düşünebilirsiniz (dönüş durum kodları, bir hata dizesi döndürmek, bir çıkış dizesi olarak bir hata dizesi eklemek), ama hepsi kendi olumsuz yanları var, ve ben de kuralları ile tutarlı kalmak istiyorum .NET Framework .
Dolayısıyla sorum şu:
.NET Framework'te (a) özel durumları atmadan girdiyi ayrıştırma ve (b) hala basit bir doğru / yanlış Boole'den daha ayrıntılı hata bilgileri döndüren yöntemler var mı?
Parse()
.