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.