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:
- İstisna Türleri: C#'ta
System.Exceptiontemel 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. - İstisna Oluşumu (throw):
throwanahtar kelimesi kullanılarak istisna oluşturulur. - İstisna Yakalama (try-catch):
trybloğu, istisna oluşturabilecek kodu içerir.catchbloğu belirli bir istisna türünü yakalar ve işleme kodunu çalıştırır. - Finally Bloğu:
finallybloğ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. - Using Operatörü: Kaynak yönetimi için daha kullanışlı bir yöntemdir ve
Disposemetodunun çağrılmasını garanti eder.IDisposablearayüzünü uygulayan nesneler içintry-finallyyapısına benzer. - İstisna Filtreleri:
catchbloğ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.