C# Hata Denetimi (try, catch, finally)
C#’ta try, catch ve finally bloklarını kullanarak hataları yakalamayı ve güvenli hata yönetimi yapmayı örneklerle öğrenin.
C#’ta hata denetimi, program çalışırken oluşabilecek beklenmedik durumları yakalayıp kontrol altına almak için kullanılır.
Bu sayede program aniden çökmez, kullanıcıya uygun mesaj verilebilir veya alternatif bir yol izlenebilir.
Hata yönetiminde try, catch ve finally blokları birlikte kullanılır.
try-catch Kullanımı
try bloğu içinde hataya yol açabilecek kodlar yazılır. Eğer bir hata (exception) oluşursa catch bloğu devreye girer.
try
{
int sayi = int.Parse("abc"); // Geçersiz dönüşüm
Console.WriteLine("Sayı: " + sayi);
}
catch (FormatException ex)
{
Console.WriteLine("Hata: Geçersiz sayı formatı.");
}
// Çıktı:
Hata: Geçersiz sayı formatı.
Birden Fazla catch
Farklı hata türleri için birden fazla catch kullanılabilir.
Bu sayede her hataya özel çözüm uygulanabilir.
try
{
int[] sayilar = { 1, 2, 3 };
Console.WriteLine(sayilar[5]); // Dizi taşması
}
catch (IndexOutOfRangeException)
{
Console.WriteLine("Hata: Dizi sınırları aşıldı.");
}
catch (Exception ex)
{
Console.WriteLine("Beklenmeyen hata: " + ex.Message);
}
finally Bloğu
finally bloğu, hata olsun veya olmasın her zaman çalıştırılır.
Genellikle dosya kapatma, veritabanı bağlantısı sonlandırma gibi temizleme işlemleri için kullanılır.
try
{
Console.WriteLine("Dosya açılıyor...");
throw new Exception("Dosya bulunamadı!");
}
catch (Exception ex)
{
Console.WriteLine("Hata: " + ex.Message);
}
finally
{
Console.WriteLine("Dosya kapatılıyor...");
}
// Çıktı:
Dosya açılıyor...
Hata: Dosya bulunamadı!
Dosya kapatılıyor...
Özel Exception Fırlatma
Kendi hata koşullarınızı tanımlayıp throw ile hata fırlatabilirsiniz.
static void Bolme(int a, int b)
{
if (b == 0)
throw new DivideByZeroException("Sıfıra bölme hatası!");
Console.WriteLine("Sonuç: " + (a / b));
}
static void Main()
{
try
{
Bolme(10, 0);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Hata: " + ex.Message);
}
}
// Çıktı:
Hata: Sıfıra bölme hatası!
TL;DR
try: Hataya neden olabilecek kod bloğu.catch: Hata yakalanıp uygun işlem yapılır.finally: Her durumda çalışır, genelde kaynak temizliği için.throw: Özel hata fırlatmak için kullanılır.- Birden fazla
catchbloğu ile farklı hata türleri ayrı ayrı yakalanabilir.