Middle
Catch bloklarını yazma sırasına göre bir fark var mı?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, var. catch blokları sıralı olarak işlenir. Daha spesifik istisnalar, daha genel olanlardan önce gelmelidir.
try
{
// Hata oluşturabilecek kod
}
// Daha spesifik istisna
catch (System.FormatException ex)
{
// Format hatası işleme
}
// Daha az spesifik istisna
catch (System.Exception ex)
{
// Diğer tüm istisnaların işlenmesi
}
Daha genel istisnayı ilk sıraya koyarsanız, daha spesifik catch bloğu, daha genel olanın kalıtımını alan istisnalar için hiçbir zaman ulaşılmaz olur. Örneğin, FormatException Exception'ın bir alt sınıfıdır. Eğer catch (Exception ex) ilk sırada olursa, FormatException'ı da yakalar.
Yanlış sıralama:
try
{
// Hata oluşturabilecek kod
}
// Genel istisna
catch (System.Exception ex)
{
// FormatException dahil tüm istisnaların işlenmesi
}
// Bu blok, FormatException için hiçbir zaman ulaşmaz,
// çünkü zaten önceki blok tarafından yakalanmıştır
catch (System.FormatException ex)
{
// Bu kod bu durumda erişilemez
}
C# derleyicisi, erişilemeyen catch bloğu için uyarı veya hata verecektir.