Sobes.tech
Junior

Môže v C# byť niekoľko blokov catch na spracovanie výnimiek?

sobes.tech AI

Odpoveď od AI

Áno, môže existovať viacero blokov catch. To umožňuje spracovať rôzne typy výnimiek odlišne.

Keď dôjde k výnimke, CLR sekvenčne kontroluje bloky catch odhora nadol, začínajúc prvým. Spustí sa prvý blok catch, ktorého typ výnimky zodpovedá typu vyvolanej výnimky alebo je jej základnou triedou.

try
{
    // Kód, ktorý môže vyvolať výnimku
}
catch (ArgumentNullException ex)
{
    // Spracovanie výnimky ArgumentNullException
}
catch (IndexOutOfRangeException ex)
{
    // Spracovanie výnimky IndexOutOfRangeException
}
catch (Exception ex)
{
    // Spracovanie všetkých ostatných výnimiek (základná trieda Exception)
    // Tento blok sa zvyčajne umiestňuje na koniec
}
finally
{
    // Kód, ktorý sa vždy vykoná, bez ohľadu na to, či došlo k výnimke
}

Je dôležité zoradiť bloky catch od špecifickejších typov výnimiek k menej špecifickým (základným triedam). Blok catch (Exception ex) by mal byť na konci, pretože zachytáva všetky výnimky.