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.
Pro práci s výjimkami používá .NET čtyři základní klíčová slova:
try nastane výjimka. Zde se provádí logování nebo náprava chyby.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.");
}
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ší.
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.
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.");
}
Související články:
Tagy: programming dot-net csharp exception-handling error-management clean-code