Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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# dilindecatch
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 sonundacatch
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ğinfinally
bloğunda açılmış olan akışları veya dosyaları kapatmak amacıyla birtry
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.