Zpracování a vyvolání výjimek v rozhraní .NETHandling and throwing exceptions in .NET

Aplikace musí být schopna zpracovávat chyby, ke kterým dochází při provádění konzistentním způsobem.Applications must be able to handle errors that occur during execution in a consistent manner. .NET poskytuje model pro oznamování chyb aplikace jednotným způsobem: operace .NET označení selhání vyvoláním výjimky..NET provides a model for notifying applications of errors in a uniform way: .NET operations indicate failure by throwing exceptions.

VýjimkyExceptions

Výjimka je libovolný chybový stav nebo neočekávané chování, na kterou narazí prováděnému programu.An exception is any error condition or unexpected behavior that is encountered by an executing program. Výjimky mohou být vyvolány z důvodu chyby v kódu nebo v kódu, který voláte (jako jsou sdílené knihovny), prostředky operačního systému není k dispozici, neočekávané podmínky, které modul runtime, zaznamená (například kód, který nelze ověřit) a tak dále.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. Aplikaci můžete obnovit z některé z těchto podmínek, ale ne od ostatních.Your application can recover from some of these conditions, but not from others. I když můžete obnovit z většina výjimek aplikace, nebude možné obnovit z většiny výjimky modulu CLR.Although you can recover from most application exceptions, you can't recover from most runtime exceptions.

V .NET, je výjimka, která dědí z objektu System.Exception třídy.In .NET, an exception is an object that inherits from the System.Exception class. Výjimka je vyvolána z oblasti kódu, kde došlo k problému.An exception is thrown from an area of code where a problem has occurred. Výjimka je předána na vrcholu zásobníku, dokud aplikace zvládne nebo program se ukončí.The exception is passed up the stack until the application handles it or the program terminates.

Výjimky vs. tradiční metody zpracování chybExceptions vs. traditional error-handling methods

Tradičně spoléhal jazykový model zpracování chyb jazyka jedinečný způsob zjišťování chyb a vyhledání obslužné rutiny pro ně nebo mechanismus zpracování chyb v operačním systému k dispozici.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. Způsob zpracování výjimek implementuje .NET nabízí následující výhody:The way .NET implements exception handling provides the following advantages:

  • Vyvolávání a zpracování výjimek funguje stejně v případě programovacích jazycích rozhraní .NET.Exception throwing and handling works the same for .NET programming languages.

  • Nevyžaduje žádnou konkrétní jazykovou syntaxi pro zpracování výjimek, ale umožňuje definovat svou vlastní syntaxi jednotlivé jazyky.Doesn't require any particular language syntax for handling exceptions, but allows each language to define its own syntax.

  • Výjimky mohou být vyvolány v procesu a dokonce i počítač hranice.Exceptions can be thrown across process and even machine boundaries.

  • Kód zpracování výjimek lze přidat do aplikace pro zvýšení spolehlivosti programu.Exception-handling code can be added to an application to increase program reliability.

Výjimky nabízí výhody oproti jiným metodám oznamování chyb, jako je například návratové kódy.Exceptions offer advantages over other methods of error notification, such as return codes. Selhání není povšimnutí, protože pokud dojde k výjimce a nechcete ji zpracovat, modul runtime ukončí aplikaci.Failures don't go unnoticed because if an exception is thrown and you don't handle it, the runtime terminates your application. Neplatné hodnoty není nadále šířit prostřednictvím systému jako výsledek kódu, které se nedaří vyhledat návratový kód chyby.Invalid values don't continue to propagate through the system as a result of code that fails to check for a failure return code.

Běžné výjimkyCommon exceptions

Následující tabulka uvádí některé běžné výjimky s příklady, co může způsobit.The following table lists some common exceptions with examples of what can cause them.

Typ výjimkyException type PopisDescription PříkladExample
Exception Základní třída pro všechny výjimky.Base class for all exceptions. Žádný (použijte odvozené třídy této výjimky).None (use a derived class of this exception).
IndexOutOfRangeException Vyvolané modulem runtime jenom v případě, že pole jsou indexována, nesprávně.Thrown by the runtime only when an array is indexed improperly. Došlo k indexování pole mimo platný rozsah:Indexing an array outside its valid range:
arr[arr.Length+1]
NullReferenceException Vyvolané modulem runtime pouze v případě, že se odkazuje objekt s hodnotou null.Thrown by the runtime only when a null object is referenced. object o = null;
o.ToString();
InvalidOperationException Vyvolání metody v neplatném stavu.Thrown by methods when in an invalid state. Volání Enumerator.MoveNext() po odebrání položky ze zdrojové kolekce.Calling Enumerator.MoveNext() after removing an item from the underlying collection.
ArgumentException Základní třída pro všechny výjimky argumentu.Base class for all argument exceptions. Žádný (použijte odvozené třídy této výjimky).None (use a derived class of this exception).
ArgumentNullException Vyvolání metody, které nepovolují argument mít hodnotu null.Thrown by methods that do not allow an argument to be null. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Vyvolání metody, které ověřují, že argumenty jsou v dané oblasti.Thrown by methods that verify that arguments are in a given range. String s = "string";
s.Substring(s.Length+1);

Viz také:See also