Sobes.tech
Intern

C# programlama dilinde istisnalar nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde istisnalar, programın çalışması sırasında ortaya çıkan ve normal akışını bozan anormal durumlar veya hatalardır.

Hataların işlenmesi kodunu ana uygulama mantığından ayırmaya olanak tanır ve daha yapılandırılmış bir hata yönetimi yaklaşımı sağlar.

C#'ta istisnaların temel yönleri:

  1. İstisna Türleri: C#'ta System.Exception temel sınıfından türeyen standart istisna sınıflarının bir hiyerarşisi vardır. Örneğin, System.NullReferenceException, System.DivideByZeroException, System.IO.FileNotFoundException. Ayrıca kendi istisna sınıflarınızı da oluşturabilirsiniz.
  2. İstisna Oluşumu (throw): throw anahtar kelimesi kullanılarak istisna oluşturulur.
  3. İstisna Yakalama (try-catch): try bloğu, istisna oluşturabilecek kodu içerir. catch bloğu belirli bir istisna türünü yakalar ve işleme kodunu çalıştırır.
  4. Finally Bloğu: finally bloğu her zaman çalışır, istisna oluşup oluşmadığına bakılmaksızın. Kaynakları serbest bırakmak için sıklıkla kullanılır.
  5. Using Operatörü: Kaynak yönetimi için daha kullanışlı bir yöntemdir ve Dispose metodunun çağrılmasını garanti eder. IDisposable arayüzünü uygulayan nesneler için try-finally yapısına benzer.
  6. İstisna Filtreleri: catch bloğuna koşul eklemeye izin verir, böylece daha özelleştirilmiş istisna işleme yapılabilir.

Kullanım örneği:

public class Example
{
    public void ProcessData(int denominator)
    {
        try
        {
            int result = 10 / denominator; // DivideByZeroException oluşturabilir
            Console.WriteLine($"Sonuç: {result}");
        }
        catch (DivideByZeroException ex) // Belirli bir istisnayı yakalarız
        {
            Console.WriteLine("Hata: Sıfıra bölme yapılamaz.");
            // Gerekirse istisna kaydı
            // Console.WriteLine($"İstisna detayları: {ex.Message}");
        }
        catch (Exception ex) // Diğer tüm istisnaları yakalar
        {
            Console.WriteLine($"Beklenmedik bir hata oluştu: {ex.Message}");
        }
        finally // Bu blok her zaman çalışır
        {
            Console.WriteLine("İşlem tamamlandı.");
        }
    }

    public void UsingExample()
    {
        // `using` kullanımıyla otomatik `Dispose` çağrısı örneği
        using (StreamReader reader = new StreamReader("file.txt"))
        {
            string line = reader.ReadLine();
            Console.WriteLine(line);
        } // Burada `reader.Dispose()` otomatik çağrılır, hata olsa bile
    }

    public void ThrowExample(int value)
    {
        if (value < 0)
        {
            throw new ArgumentOutOfRangeException(nameof(value), "Değer sıfır veya pozitif olmalı."); // Kendi istisnamızı oluşturuyoruz
        }
        // ... diğer mantık
    }
}

İstisnaların kullanımı, daha güvenilir, okunabilir ve sürdürülebilir uygulamalar oluşturmaya yardımcı olur, hata işleme kodunu ana mantıktan ayırır.