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( falsegeç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 TryParseyö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, seşleşmeyen parantez veya yanlış sayıda karakter veya Barkarşılık gelen bir Bazvb. 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().