Výjimky a zpracování výjimek (Příručka programování C#)
Zpracování funkce nápovědy jazyka C# výjimek řešit neočekávané nebo výjimečných situací, ke kterým dochází při spuštění programu.Používá zpracování výjimek try, catch, a finally klíčová slova, zkuste akce, které nemusí být úspěšné, zpracování chyb při rozhodování, je rozumné provést a následně vyčištění prostředků.Výjimky mohou být generovány common language runtime (CLR) rozhraní.NET Framework nebo jakékoli třetí strany knihoven nebo kódem aplikace.Výjimky jsou vytvářeny pomocí throw klíčové slovo.
V mnoha případech výjimka může být vyvolána není metodou, která má přímo volat váš kód, ale jinou metodou dále dolů v zásobníku volání.V takovém případě CLR budou unwind v zásobníku pro metodu s catch blokování pro typ výjimky a provede první takové catch bloku Pokud najde.Pokud najde žádné odpovídající catch blokovat kdekoli v zásobníku volání, bude proces ukončit a zobrazit zprávu uživateli.
V tomto příkladu je metoda zkoušky pro dělení nulou a zachytí chyby.Bez zpracování výjimek by tento program ukončen s DivideByZeroException neošetřené chyba.
class ExceptionTest
{
static double SafeDivision(double x, double y)
{
if (y == 0)
throw new System.DivideByZeroException();
return x / y;
}
static void Main()
{
// Input for test purposes. Change the values to see
// exception handling behavior.
double a = 98, b = 0;
double result = 0;
try
{
result = SafeDivision(a, b);
Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
}
catch (DivideByZeroException e)
{
Console.WriteLine("Attempted divide by zero.");
}
}
}
Přehled výjimek
Výjimky mají následující vlastnosti:
Výjimky jsou typy nakonec všechny odvozené z System.Exception.
Použití try bloku kolem příkazy, které mohou vyvolat výjimky.
Jakmile dojde k výjimce v try blokovat tok řízení přejde první přidružené obslužnou rutinu, která je k dispozici kdekoli v zásobníku volání.V jazyce C# catch klíčové slovo se používá k definování obslužné rutiny výjimky.
Pokud je obslužná rutina vyjímky pro danou výjimku, program ukončen s chybovou zprávou.
Nezachytávejte výjimku, pokud jste jej zpracovat a nechte aplikaci do známého stavu.Pokud zachytit System.Exception, úloha znovu vyvolat úlohy pomocí throw klíčové slovo na konci catch bloku.
Pokud catch blok definuje proměnnou výjimka, ve kterém můžete získat další informace o typu výjimky, došlo k chybě.
Výjimky mohou být explicitně generována programem pomocí throw klíčové slovo.
Výjimka objekty obsahují podrobné informace o chybě, například stav zásobníku volání a text popisu chyby.
Kód finally blok je proveden, i když je vyvolána výjimka.Použití finally blok uvolnění prostředků, například zavřít všechny proudy nebo soubory, které byly otevřeny try bloku.
Spravované výjimky v rozhraní.NET Framework jsou implementovány na mechanismus zpracování výjimek strukturovaného systému Win32.Další informace naleznete v Structured Exception zpracování (C++) a A Crash kurz na hloubky z Win32 strukturované zpracování výjimek.
Související oddíly
Následující témata pro další informace o zpracování výjimek a výjimek:
Jak: Popisovač výjimce pomocí try/catch (C# program televize)
Jak: spustit vyčištění kódu pomocí nakonec (C# program televize)
Specifikace jazyka C#
Další informace naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.
Viz také
Referenční dokumentace
try-catch-finally (C#-Reference)