Birden çok istisna bir kez yakaladın mı?
Sadece System.Exception
yakalamak için önerilmez. Bunun yerine, sadece "bilinen" özel durum yakalandı.
Şimdi, Bu bazen, örneğin: tekrarlanan kod gereksiz yol açar
try
{
WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
WebId = Guid.Empty;
}
catch (OverflowException)
{
WebId = Guid.Empty;
}
Merak ediyorum: bir iki istisna yakalamak ve sadece WebId = Guid.Empty
aramak için bir kez?
Düzenleme:Verilen örnek sadece GUID gibi oldukça basittir. Ama düşünün bir nesneyi birden çok kez değiştirin ve eğer manipülasyonlar biri beklenen bir şekilde başarısız olursa, "nesne. sıfırlamak istediğiniz kodu Eğer beklenmedik bir durum varsa ancak, ben hala daha atmak istiyorum.
Cevap:Herkese teşekkürler! Nedense GetType()
anahtarlama desteği switch-case
bir deyim var kafamda planlamıştım. Şimdi, iki cevap vardı, birini kullanarak "typeof
" kullanarak "is
". Ben ilk düşündüğüm için typeof()
benim görevim olacağını düşündüm, "Hey, ben sadece beklediğim tek şey bu çünkü FormatException
yakalamak istiyorum". Ama bu böyle değil catch()
çalışır: tüm yakalar da türetilmiş özel durumları yakalamak. Bunu düşündükten sonra, bu çok açıktır: Yoksa catch(Exception ex)
işe yaramaz! Doğru cevap "is
". Evet, tek bir soru \o/ ile iki şey öğrendim
CEVAP
System.Exception
yakalamak ve türlerini açın
catch (Exception ex)
{
if (ex is FormatException || ex is OverflowException)
{
WebId = Guid.Empty;
return;
}
throw;
}
Girinti hızla vı birden fazla satır...
Nasıl birden fazla sınıflar ile bir öğ...
Gıt ile değişen birden fazla dosya tek...
Birden fazla "SERİ" sipariş...
Yakalamak birden fazla satır istisnala...