Sobes.tech
Junior

C#'ta istisnaları işlemek için birden fazla catch bloğu olabilir mi?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, birden fazla catch bloğu olabilir. Bu, farklı istisna türlerini farklı şekilde işlemenize olanak tanır.

Bir istisna oluştuğunda, CLR yukarıdan aşağıya doğru catch bloklarını sıralı olarak kontrol eder, ilkinden başlar. Oluşan istisna türüyle eşleşen veya onun temel sınıfı olan ilk catch bloğu çalıştırılır.

try
{
    // İstisna oluşturabilecek kod
}
catch (ArgumentNullException ex)
{
    // ArgumentNullException istisnasının işlenmesi
}
catch (IndexOutOfRangeException ex)
{
    // IndexOutOfRangeException istisnasının işlenmesi
}
catch (Exception ex)
{
    // Diğer tüm istisnaların işlenmesi (Temel sınıf Exception)
    // Bu blok genellikle en sona konur
}
finally
{
    // Her zaman çalışacak kod, istisna olup olmamasına bakılmaksızın
}

catch bloklarını, daha özelleşmiş istisna türlerinden daha genel olanlara doğru sıralamak önemlidir. catch (Exception ex) bloğu en sona konmalıdır, çünkü tüm istisnaları yakalar.