C# Academy · Ders

try/catch/finally, throw new ve yeniden fırlatma

Öngörülebilir hata yönetimi için try/catch/finally kullanın; throw new ile yeniden fırlatma arasındaki farkı anlayın ve örnekleri küçük ve amaca odaklı tutun.

1. ders / 38 adım

try/catch/finally, throw new ve yeniden fırlatma, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

Özel durumlara genel bakış

Amaç: Hataları güvenli biçimde ele almak ve yaymak.

  • try/catch: belirli özel durumları ele alın.
  • finally: temizleme için her zaman çalışır.
  • throw new ile yeniden fırlatma arasındaki farkı öğrenin.
  • İşleyicileri kısa tutun; hataları gizlemeyin.

Belirli özel durumu yakalama

Beklediğiniz en belirli özel durumu yakalayın; işleyiciyi kısa ve anlaşılır tutun.

using System;

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Start");
    try
    {
      int x = 10;
      int y = 0; // will cause DivideByZeroException
      Console.WriteLine(x / y);
    }
    catch (DivideByZeroException ex)
    {
      Console.WriteLine("Cannot divide by zero: " + ex.GetType().Name);
    }
    Console.WriteLine("Continue");
  }
}

Yakalama sıralaması

Sıralama önemlidir: Önce belirli yakalamaları, güvenlik ağı olarak genel Exception yakalamasını ise en sona yerleştirin.

using System;

public class Program
{
  static int ParseAndDivide(string text, int divisor)
  {
    // Throws FormatException or DivideByZeroException
    int value = int.Parse(text);
    return value / divisor;
  }

  public static void Main(string[] args)
  {
    try
    {
      Console.WriteLine(ParseAndDivide("not-a-number", 2));
    }
    catch (FormatException)
    {
      Console.WriteLine("Bad number format");
    }
    catch (Exception ex)
    {
      // Fallback last
      Console.WriteLine("Other error: " + ex.GetType().Name);
    }
  }
}

Temizleme için finally

Temizleme işlemini finally içine koyun. Özel durum oluşsa da oluşmasa da çalışır.

using System;

public class Program
{
  static bool opened = false;

  static void UseFakeResource()
  {
    try
    {
      opened = true;
      Console.WriteLine("Open");
      throw new InvalidOperationException("boom");
    }
    catch (InvalidOperationException)
    {
      Console.WriteLine("Handled");
    }
    finally
    {
      opened = false; // cleanup path
      Console.WriteLine("Close");
    }
  }

  public static void Main(string[] args)
  {
    UseFakeResource();
    Console.WriteLine("Opened? " + opened);
  }
}

Doğru yeniden fırlatma

Yeniden fırlatmak ve özgün yığını korumak için throw; kullanın. throw ex; yığını sıfırlar. Yalnızca bağlam ekliyorsanız yeni bir özel durumla sarın.

using System;

public class Program
{
  static void BadRethrow()
  {
    try
    {
      Fail();
    }
    catch (Exception ex)
    {
      // Resets stack trace:
      throw ex; // BAD rethrow
    }
  }

  static void GoodRethrow()
  {
    try
    {
      Fail();
    }
    catch
    {
      // Preserves original stack trace:
      throw; // GOOD rethrow
    }
  }

  static void Fail()
  {
    throw new InvalidOperationException("fail");
  }

  public static void Main(string[] args)
  {
    try { BadRethrow(); }
    catch (Exception ex)
    {
      Console.WriteLine("Bad: " + (ex.StackTrace == null ? "no stack" : "stack reset likely"));
    }

    try { GoodRethrow(); }
    catch (Exception ex)
    {
      Console.WriteLine("Good: preserves original stack");
    }
  }
}

Ele alma yönergeleri

Yönergeler:

  • Bir özel durumu ancak onu ele alabiliyor veya bağlam ekleyebiliyorsanız yakalayın.
  • Aksi durumda yukarı doğru yayılmasına izin verin.
  • İşleyicileri küçük tutun; özel durumları sessizce yutmaktan kaçının.
  • Temizleme için finally kullanın; kaynakların serbest bırakılması bir sonraki derstedir.

Yeniden fırlatma kuralı

Hızlı kontrol: Özgün yığın izini koruyarak geçerli özel durumu doğru biçimde yeniden fırlatan ifade hangisidir?

Tekrar

Tekrar: Belirli hatalar için try/catch, temizleme için finally kullanın; yeniden fırlatırken özgün yığını korumak için throw; ifadesini tercih edin.

Başlamak ücretsiz

Yapay zeka eğitmeniyle C# öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
93
Dersler
346

Sıkça Sorulan Sorular

“try/catch/finally, throw new ve yeniden fırlatma” dersi ücretsiz mi?

Evet — “try/catch/finally, throw new ve yeniden fırlatma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“try/catch/finally, throw new ve yeniden fırlatma” dersinde ne öğreneceğim?

Öngörülebilir hata yönetimi için try/catch/finally kullanın; throw new ile yeniden fırlatma arasındaki farkı anlayın ve örnekleri küçük ve amaca odaklı tutun. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.

“try/catch/finally, throw new ve yeniden fırlatma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. try/catch/finally, throw new ve yeniden fırlatma
  2. Özel istisnalar ve hata tasarımı
  3. IDisposable ve using deyimi
← C# Academy Sayfasına Dön