Aracılığıyla paylaş


Ö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, try, catch, ve finally anahtar sözcüklerini; başarılı olamayabilecek eylemleri denemek, makul bir karara vardığınızda hataları işlemek ve daha sonra kaynakları temizlemek için kullanır. Ö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, daha sonra çağrı yığınında başka bir yöntem tarafından oluşturulabilir. Bir özel durum fırlatıldığında, CLR, yığını çözerek belirli bir özel durum türüne uygun bir catch bloğuna sahip bir yöntem arayacak ve bulduğu ilk catch bloğunu çalıştıracaktır. Çağrı yığınının herhangi bir yerinde uygun catch bir blok bulmazsa işlemi sonlandırıp kullanıcıya bir ileti görüntüler.

Bu örnekte, bir yöntem sıfıra bölme için test eder 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($"{a} divided by {b} = {result}");
        }
        catch (DivideByZeroException)
        {
            Console.WriteLine("Attempted divide by zero.");
        }
    }
}

Özel Durumlara Genel Bakış

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

  • Hatalar, sonuçta hepsi System.Exception'dan türeyen türlerdir.
  • Özel durumlar oluşturabilecek deyimlerin çevresinde bir try blok kullanın.
  • Blokta bir özel durum oluştuğunda try , denetim akışı çağrı yığınının herhangi bir yerinde bulunan ilk ilişkili özel durum işleyicisine atlar. C# dilinde catch anahtar sözcüğü bir özel durum işleyicisi 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.
  • İstisnayı işleyemiyor ve uygulamayı bilinen bir durumda bırakamıyorsanız bir istisna yakalamayın. Eğer System.Exception'yi yakalarsanız, throw bloğunun sonunda catch anahtar sözcüğünü kullanarak yeniden fırlatın.
  • 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, özel durum oluştuğundan bağımsız olarak yürütülür. Kaynakları serbest bırakmak için, örneğin finally bloğunda açılmış olan akışları veya dosyaları kapatmak amacıyla bir try blok kullanı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 İşleme Derinlikleri Üzerine Hızlı Eğitim.

C# Dil Belirtimi

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

Ayrıca bkz.