Özel Durumlar ve Özel Durum İşleme

C# dilinin özel durum işleme özellikleri, bir program çalışırken oluşan beklenmeyen veya olağanüstü durumlarla ilgilenmenize yardımcı olur. Özel durum işleme, başarılı olabilen eylemleri denemek, bunu makul bir karara vardığınızda hataları işlemek ve daha sonra kaynakları temizlemek için , catchfinally ve anahtar sözcüklerini kullanırtry. Özel durumlar ortak dil çalışma zamanı (CLR), .NET veya üçüncü taraf kitaplıkları veya uygulama kodu tarafından oluşturulabilir. Özel durumlar anahtar sözcüğü kullanılarak throw oluşturulur.

Çoğu durumda, özel durum kodunuzun doğrudan çağırdığı bir yöntem tarafından değil, çağrı yığınında daha aşağıda bulunan başka bir yöntem tarafından oluşturulabilir. Özel durum oluşturulduğunda CLR, belirli bir özel durum türü için blok içeren bir catch yöntem arayarak yığını geri alır ve bulduğu ilk bu tür catch bloğu yürütür. Çağrı yığınının herhangi bir yerinde uygun catch bir blok bulmazsa, işlemi sonlandırır ve kullanıcıya bir ileti görüntüler.

Bu örnekte, bir yöntem sıfıra bölmeyi sınar ve hatayı yakalar. Özel durum işlemesi olmadan bu program DivideByZeroException işlenmemiş hatasıyla sonlandırılır .

public class ExceptionTest
{
    static double SafeDivision(double x, double y)
    {
        if (y == 0)
            throw new DivideByZeroException();
        return x / y;
    }

    public static void Main()
    {
        // Input for test purposes. Change the values to see
        // exception handling behavior.
        double a = 98, b = 0;
        double result;

        try
        {
            result = SafeDivision(a, b);
            Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
        }
        catch (DivideByZeroException)
        {
            Console.WriteLine("Attempted divide by zero.");
        }
    }
}

Özel Durumlara Genel Bakış

Özel durumlar aşağıdaki özelliklere sahiptir:

  • Özel durumlar, sonuçta türünden türetilen türlerdir System.Exception.
  • Deyimlerin çevresinde özel durumlar oluşturabilecek bir try blok kullanın.
  • Blokta bir özel durum oluştuğunda try , denetim akışı çağrı yığınında herhangi bir yerde bulunan ilk ilişkili özel durum işleyicisine atlar. C# dilinde catch anahtar sözcüğü bir özel durum işleyici tanımlamak için kullanılır.
  • Belirli bir özel durum için özel durum işleyicisi yoksa, program bir hata iletisiyle yürütmeyi durdurur.
  • İşleyip uygulamayı bilinen bir durumda bırakmadığınız sürece bir özel durum yakalamayın. yakalarsanız System.Exception, bloğun sonundaki anahtar sözcüğünü throw kullanarak yeniden yükleyin catch .
  • Bir catch blok bir özel durum değişkeni tanımlıyorsa, oluşan özel durum türü hakkında daha fazla bilgi edinmek için bunu kullanabilirsiniz.
  • Özel durumlar, anahtar sözcüğü kullanılarak throw bir program tarafından açıkça oluşturulabilir.
  • Özel durum nesneleri, çağrı yığınının durumu ve hatanın metin açıklaması gibi hata hakkında ayrıntılı bilgiler içerir.
  • Bir finally bloktaki kod, bir özel durum oluşturulsa bile yürütülür. Kaynakları serbest bırakmak için bir finally blok kullanın; örneğin blokta try açılmış olan akışları veya dosyaları kapatın.
  • .NET'teki yönetilen özel durumlar Win32 yapılandırılmış özel durum işleme mekanizmasının üzerine uygulanır. Daha fazla bilgi için Bkz. Yapılandırılmış Özel Durum İşleme (C/C++) ve Win32 Yapılandırılmış Özel Durum İşlemenin Derinlikleri ile ilgili Kilitlenme Kursu.

C# Dil Belirtimi

Daha fazla bilgi için bkz. C# Dil BelirtimindekiÖzel Durumlar. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.