C#
try/catch
try/catch ile çalışma zamanı hatalarını yakalamayı öğrenirsin.
try/catch ile hata yakalama
C#'ta çalışma zamanı hatası (istisna) oluştuğunda program normalde çöker. Bunu önlemek için riskli kodu try bloğuna, hata yakalama kodunu ise catch bloğuna yazarsın. Böylece istisna fırlatıldığında catch bloğu çalışır ve program yoluna devam eder.
Örnek: try { int n = int.Parse("abc"); } catch (Exception) { ... } yapısında int.Parse bir FormatException fırlatır; bu istisna catch bloğu tarafından yakalanır ve program çökmeden devam eder.
Birden çok catch bloğu
Tek bir try bloğundan sonra birden çok catch bloğu yazabilirsin. Her biri farklı istisna türünü yakalar. Daha özel olan türler önce, daha genel olanlar sonra yazılır; çünkü eşleşen ilk catch çalışır.
Örnek: catch (FormatException) { ... } catch (Exception) { ... } sırasında önce biçim hatası, sonra genel istisna yakalanır. Exception en genel tür olduğundan her zaman sona yazılır; aksi halde diğer catch'lere hiç ulaşılamaz.
Özel istisna türleri
C# birçok yerleşik istisna türü sunar. FormatException hatalı biçimdeki dize dönüşümünde, DivideByZeroException sıfıra bölmelerde, IndexOutOfRangeException dizi sınırı aşımında fırlatılır. Türünü bilerek yakalamak, hataya özel bir yanıt vermeni sağlar.
Örneğin catch (DivideByZeroException) yalnızca sıfıra bölme hatasını yakalar; başka istisnalar bu bloğa girmez. Bu sayede farklı hata türlerine farklı mesajlar veya kurtarma stratejileri uygulayabilirsin.
Uygulama Sıfıra bölmeyi yakala
try bloğu içinde int c = a / b; satırıyla bölme yap. b sıfır olduğundan DivideByZeroException fırlatılacaktır. catch (DivideByZeroException) bloğu içinde Console.WriteLine ile "Sıfıra bölme hatası" yazdır.
Örnek çözümü göster
try { int c = a / b; } yaz, sonra catch (DivideByZeroException) { Console.WriteLine("Sıfıra bölme hatası"); } ekle.
Örnek çözüm:
using System;
class Program
{
static void Main()
{
int a = 10;
int b = 0;
try
{
int c = a / b;
}
catch (DivideByZeroException)
{
Console.WriteLine("Sıfıra bölme hatası");
}
}
}
Kendini test et
-
try bloğunda istisna fırlatıldığında ne olur?
try { int n = int.Parse("abc"); }
catch (Exception) { Console.WriteLine("Hata"); }
- Program çöker
- catch bloğu çalışır
- try bloğu devam eder
- FormatException fırlatılır ve program durur
Cevabı göster
catch bloğu çalışır — Doğru! İstisna fırlatılınca try bloğu kesilir ve catch çalışır.
-
catch sözdizimi
try { int n = int.Parse("abc"); }
____ { Console.WriteLine("Hata"); }
Cevabı göster
try { int n = int.Parse("abc"); }
catch (Exception) { Console.WriteLine("Hata"); }
-
İstisnayı senaryosuyla eşleştir
- FormatException
- Geçersiz dize
- DivideByZeroException
- Sıfıra bölme
- IndexOutOfRangeException
- Dizi sınırı
Sıradaki ders: finally bloğu