CodeBlanks Logo Icon CodeBlanks

Exception sınıfı

C# kursu · Başlangıç · Ders 109/116

Exception sınıfının Message, StackTrace ve InnerException özelliklerini öğrenirsin.

Exception sınıfının özellikleri

Tüm istisnalar System.Exception sınıfından türetilir. Bu sınıfın birkaç yararlı özelliği vardır: Message hatanın açıklamasını, StackTrace çağrı yığınını, InnerException ise varsa özgün istisnayı tutar. Bunlar catch bloğunda hata ayıklamayı kolaylaştırır.

Örnek: catch (Exception ex) { Console.WriteLine(ex.Message); } satırı hatanın mesajını yazdırır. ex.StackTrace ile hatanın nereden geldiğini görür, ex.InnerException ile sarmalanmış özgün hataya ulaşırız. Bu özellikler hata ayıklama ve günlükleme için temeldir.

StackTrace ile hata kaynağı

StackTrace özelliği, istisnanın fırlatıldığı noktadan itibaren çağrı yığınını metin olarak verir. Hangi metodun, hangi satırda hataya yol açtığını gösterir. Hata ayıklama ve günlükleme için çok değerlidir.

Örnek: Console.WriteLine(ex.StackTrace); çağrısı, hatanın izini satır satır yazdırır. Bu çıktıdan hatanın kaynağını ve hangi yöntemler zincirinin onu tetiklediğini görebilirsin. Yine de üretimde tam yığın izini kullanıcıya göstermek güvenlik açısından riskli olabilir; günlüğe kaydetmek daha iyi bir yöntemdir.

InnerException ile sarmalama

Bazen düşük seviye bir hatayı daha yüksek seviye bir istisnayla sarmalamak istersin. Bu, özgün hatayı kaybetmeden üst katmanda anlamlı bir mesaj sunmanı sağlar. InnerException özelliği, sarmalanan özgün istisnayı taşır.

Örnek: throw new Exception("Veri yüklenemedi", innerEx); satırı, innerEx'i InnerException olarak tutan yeni bir istisna fırlatır. catch bloğunda ex.InnerException.Message ile özgün hatanın mesajına ulaşabilirsin. Bu teknik, katmanlı mimarilerde yaygındır.

Uygulama Mesajı yakala ve yazdır

try bloğu içinde throw new Exception("Veri eksik"); ile istisna fırlat. catch (Exception ex) bloğu içinde Console.WriteLine ile ex.Message'i yazdır.

Örnek çözümü göster
try { throw new Exception("Veri eksik"); } catch (Exception ex) { Console.WriteLine(ex.Message); } yaz.
Örnek çözüm:
using System;

class Program
{
    static void Main()
    {
        try
        {
            throw new Exception("Veri eksik");
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

Kendini test et

  1. ex.Message ne döndürür?

    Exception e = new Exception("Hata oluştu");
    Console.WriteLine(e.Message);
    • "Hata oluştu"
    • null
    • "Exception"
    • FormatException fırlatır
    Cevabı göster

    "Hata oluştu" — Doğru! Message, kurucuda verilen açıklamayı döndürür.

  2. Mesaja eriş

    catch (Exception ex) {
        Console.WriteLine(____);
    }
    Cevabı göster
    catch (Exception ex) {
        Console.WriteLine(ex.Message);
    }
  3. InnerException neden kullanılır?

    • Daha hızlı fırlatmak için
    • Özgün hatayı korumak için
    • Sadece string için
    • StackTrace'i silmek için
    Cevabı göster

    Özgün hatayı korumak için — Doğru! InnerException ile özgün hatayı sarmalanmış istisnanın içinde korursun.

Başlangıç bölümündeki tüm dersler