Sobes.tech
Junior

Vai C# var būt vairāki catch bloki izņēmumu apstrādei?

sobes.tech AI

Atbilde no AI

Jā, var būt vairāki catch bloki. Tas ļauj dažādā veidā apstrādāt dažādus izņēmumu tipus.

Kad notiek izņēmums, CLR secīgi pārbauda catch blokus no augšas uz leju, sākot ar pirmo. Pirmais catch bloks, kura izņēmuma tips atbilst izsauktā izņēmuma tipam vai ir tā bāzes klase, tiek izpildīts.

try
{
    // Kods, kas var izraisīt izņēmumu
}
catch (ArgumentNullException ex)
{
    // ArgumentNullException izņēmuma apstrāde
}
catch (IndexOutOfRangeException ex)
{
    // IndexOutOfRangeException izņēmuma apstrāde
}
catch (Exception ex)
{
    // Visu citu izņēmumu apstrāde (bāzes klase Exception)
    // Šis bloks parasti ir pēdējais
}
finally
{
    // Kods, kas vienmēr tiks izpildīts, neatkarīgi no tā, vai notika izņēmums
}

Ir svarīgi sakārtot catch blokus no specifiskākiem uz mazāk specifiskiem (bāzes klasēm). catch (Exception ex) bloks jānovieto pēdējais, jo tas noķer visas izņēmumu kļūdas.