İşleme ve .NET özel durumları atmaHandling and throwing exceptions in .NET

Uygulamalar, yürütme sırasında oluşan hataları tutarlı bir şekilde işleyebilmelidir.Applications must be able to handle errors that occur during execution in a consistent manner. .NET, hataların uygulamalarda tutarlı bir şekilde bildirimde bulunmak için bir model sağlar: .NET işlemleri özel durumlar oluşturarak hatanın başarısız olduğunu gösterir..NET provides a model for notifying applications of errors in a uniform way: .NET operations indicate failure by throwing exceptions.

Özel DurumlarExceptions

Bir özel durum, çalıştırılan bir program tarafından karşılaşılan herhangi bir hata durumu veya beklenmedik davranıştır.An exception is any error condition or unexpected behavior that is encountered by an executing program. Kodunuzda veya çağırdığınız kodda (örneğin, paylaşılan bir kitaplık), kullanılamayan işletim sistemi kaynaklarıyla, çalışma zamanının karşılaştığı beklenmeyen koşullar (doğrulanamayan kod gibi) veya benzeri bir hata nedeniyle özel durumlar oluşturulabilir.Exceptions can be thrown because of a fault in your code or in code that you call (such as a shared library), unavailable operating system resources, unexpected conditions that the runtime encounters (such as code that can't be verified), and so on. Uygulamanız bu koşullardan bazılarını kurtarabilir, ancak başkalarından daha fazlasını yapabilir.Your application can recover from some of these conditions, but not from others. Çoğu uygulama özel durumundan kurtarabilseniz de, çoğu çalışma zamanı özel durumu ' nu kurtaramazsınız.Although you can recover from most application exceptions, you can't recover from most runtime exceptions.

.NET sürümünde, özel durum System.Exception sınıfından devralan bir nesnedir.In .NET, an exception is an object that inherits from the System.Exception class. Bir sorunun oluştuğu bir kod alanından bir özel durum oluşur.An exception is thrown from an area of code where a problem has occurred. Özel durum, uygulama onu işleyene veya program sonlanana kadar yığını iletilir.The exception is passed up the stack until the application handles it or the program terminates.

Özel durumlar ve geleneksel hata işleme yöntemleri karşılaştırmasıExceptions vs. traditional error-handling methods

Geleneksel olarak, bir dilin hata işleme modeli, hataların hataları tespit etme ve işleyicileri bulma ve işletim sistemi tarafından sunulan hata işleme mekanizması üzerinde, dilin benzersiz yolunu ortadan kaldırabilir.Traditionally, a language's error-handling model relied on either the language's unique way of detecting errors and locating handlers for them, or on the error-handling mechanism provided by the operating system. .NET özel durum işlemeyi uygulayan yol aşağıdaki avantajları sağlar:The way .NET implements exception handling provides the following advantages:

  • Özel durum oluşturma ve işleme, .NET programlama dilleri için aynı şekilde geçerlidir.Exception throwing and handling works the same for .NET programming languages.

  • Özel durumları işlemek için belirli bir dil sözdizimi gerektirmez, ancak her dilin kendi sözdizimini tanımlamasına izin verir.Doesn't require any particular language syntax for handling exceptions, but allows each language to define its own syntax.

  • Özel durumlar işlem ve hatta makine sınırları arasında oluşturulabilir.Exceptions can be thrown across process and even machine boundaries.

  • Özel durum işleme kodu, program güvenilirliğini artırmak için bir uygulamaya eklenebilir.Exception-handling code can be added to an application to increase program reliability.

Özel durumlar, dönüş kodları gibi diğer hata bildirimi yöntemlerine ilişkin avantajlar sunar.Exceptions offer advantages over other methods of error notification, such as return codes. Bir özel durum oluşursa ve bu işlemi işlemezseniz, çalışma zamanı uygulamanızı sonlandırır.Failures don't go unnoticed because if an exception is thrown and you don't handle it, the runtime terminates your application. Geçersiz değerler, hata dönüş kodu denetimi başarısız olan kodun bir sonucu olarak sisteme yayılmaya devam eder.Invalid values don't continue to propagate through the system as a result of code that fails to check for a failure return code.

Sık karşılaşılan özel durumlarCommon exceptions

Aşağıdaki tablo, bazı yaygın özel durumları, bunlara neden olabilecek örneklere örnek olarak listelemektedir.The following table lists some common exceptions with examples of what can cause them.

Özel durum türüException type AçıklamaDescription ÖrnekExample
Exception Tüm özel durumlar için temel sınıf.Base class for all exceptions. Hiçbiri (Bu özel durumun türetilmiş bir sınıfını kullanın).None (use a derived class of this exception).
IndexOutOfRangeException Çalışma zamanı tarafından yalnızca bir dizi yanlış dizin oluşturulduğunda oluşturulur.Thrown by the runtime only when an array is indexed improperly. Dizinin geçerli aralığının dışında dizin oluşturma:Indexing an array outside its valid range:
arr[arr.Length+1]
NullReferenceException Çalışma zamanı tarafından yalnızca null bir nesneye başvuruluyorsa oluşturulur.Thrown by the runtime only when a null object is referenced. object o = null;
o.ToString();
InvalidOperationException Geçersiz bir durumda olan yöntemler tarafından oluşturuldu.Thrown by methods when in an invalid state. Temel koleksiyondan bir öğe kaldırıldıktan sonra Enumerator.MoveNext() çağrılıyor.Calling Enumerator.MoveNext() after removing an item from the underlying collection.
ArgumentException Tüm bağımsız değişken özel durumları için temel sınıf.Base class for all argument exceptions. Hiçbiri (Bu özel durumun türetilmiş bir sınıfını kullanın).None (use a derived class of this exception).
ArgumentNullException Bağımsız değişkenin null olması için izin verilmeyen yöntemler tarafından oluşturuldu.Thrown by methods that do not allow an argument to be null. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Bağımsız değişkenlerin belirli bir aralıkta olduğunu doğrulayan yöntemler tarafından oluşturulur.Thrown by methods that verify that arguments are in a given range. String s = "string";
s.Substring(s.Length+1);

Ayrıca bkz.See also