Obsah

Zpracování výjimek v .NET

Výjimka (Exception) je objekt, který nese informaci o chybě, k níž došlo během vykonávání programu. Proces zachycení a zpracování této chyby se nazývá Exception Handling.

1. Základní konstrukce: try-catch-finally

Pro práci s výjimkami používá .NET čtyři základní klíčová slova:

try {
    int vysledek = 10 / nula; // Zde vznikne DivideByZeroException
}
catch (DivideByZeroException ex) {
    Console.WriteLine("Nelze dělit nulou!");
}
catch (Exception ex) {
    Console.WriteLine($"Nastala obecná chyba: {ex.Message}");
}
finally {
    Console.WriteLine("Operace ukončena.");
}

2. Hierarchie výjimek

V .NET všechny výjimky dědí ze základní třídy System.Exception. Při odchytávání je důležité řadit bloky catch od nejspecifičtějších po nejobecnější.


3. Propagace výjimek a Stack Trace

Pokud výjimka není zachycena v aktuální metodě, „probublává“ nahoru do volající metody. Tento proces pokračuje, dokud není nalezena odpovídající sekce catch, nebo dokud aplikace nespadne.

Objekt výjimky obsahuje vlastnost StackTrace, což je textový výpis cesty, kterou výjimka prošla. To je klíčové pro debugging.

Pozor: Při opětovném vyhazování výjimky v bloku catch používejte samotné `throw;`. Pokud použijete `throw ex;`, přepíšete původní StackTrace a ztratíte informaci o tom, kde chyba skutečně vznikla.

4. Filtry výjimek (Exception Filters)

Od verze C# 6.0 lze použít klíčové slovo `when`, které umožní zachytit výjimku jen za určité podmínky:

catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound) {
    Console.WriteLine("Stránka nebyla nalezena.");
}

5. Best Practices


Související články:

Tagy: programming dot-net csharp exception-handling error-management clean-code