C# programlama dilinde bilindiği üzere hataları yönetmek için try-catch bloğu kullanılır. Try-Catch blogunda belirli tipteki hataları yonetmek için hata tipi belirtebiliriz. Bunun yanında hatalarımıza dahada spesifikli kazandırmak isterserk catch bloğunda filtre kullanabilirsiniz. Bu, catch bloğunun sadece belirli bir türdeki hataları/istisnaları işlemesini sağlar ve diğer istisnaları atlar.
Örnek Kullanım:
try
{
// İstisna oluşturabilecek kodlar buraya gelir
int a = 10;
int b = 0;
int result = a / b; // Bu işlemde bir ArithmeticException oluşacak
}
catch (ArithmeticException ex) when (ex.Message.Contains("zero"))
{
// Sadece ArithmeticException türündeki ve mesajı içinde "zero" geçen istisnaları işle
Console.WriteLine("Hata: Bir sayı sıfıra bölünemez!");
}
catch (ArithmeticException)
{
// Diğer ArithmeticException türündeki istisnaları işle
Console.WriteLine("ArithmeticException yakalandı.");
}
catch (Exception)
{
// Diğer tüm istisnaları işle
Console.WriteLine("Bir hata oluştu.");
}
finally
{
// Her durumda çalışacak kodlar buraya gelir
Console.WriteLine("Finally bloğu çalıştı.");
}
Bu kod örneğinde, try bloğunda bir ArithmeticException hatası oluşturuluyor. İlk catch bloğu, yalnızca ArithmeticException türündeki hataları/istisnaları yakalayacak ve bu istisna mesajında “zero” kelimesini içeriyorsa çalışacak. Diğer catch bloğu ise yalnızca ArithmeticException türündeki ancak belirtilen koşulu sağlamayan hataları/istisnaları yakalayacaktır. Son catch bloğu, tüm diğer hataları/istisnaları yakalar. finally bloğu ise her durumda çalışacak kodları içerir.
Bu şekilde, catch bloklarında filtre kullanarak belirli türdeki istisnaları özel olarak ele alabilir ve daha spesifik bir şekilde yönetebilirsiniz.