Sobes.tech
Junior

Kas C#-s võib olla mitu catch plokki erandite töötlemiseks?

sobes.tech AI

Vastus AI-lt

Jā, var būt vairāk nekā viens catch bloks. Tämä mahdollistaa erilaisten poikkeusten käsittelyn eri tavalla.

Kun poikkeus tapahtuu, CLR tarkistaa catch-blokit ylhäältä alas, aloittaen ensimmäisestä. Ensimmäinen catch-lohko, jonka poikkeustyyppi vastaa heitetyn poikkeuksen tyyppiä tai on sen perusluokka, suoritetaan.

try
{
    // Koodi, joka voi aiheuttaa poikkeuksen
}
catch (ArgumentNullException ex)
{
    // ArgumentNullException-poikkeuksen käsittely
}
catch (IndexOutOfRangeException ex)
{
    // IndexOutOfRangeException-poikkeuksen käsittely
}
catch (Exception ex)
{
    // Kaikkien muiden poikkeusten käsittely (perusluokka Exception)
    // Tämä lohko sijoitetaan yleensä viimeiseksi
}
finally
{
    // Koodi, joka suoritetaan aina, riippumatta siitä, onko poikkeus tapahtunut
}

On tärkeää järjestää catch-blokit spesifimmistä yleisimpiin (perusluokat). catch (Exception ex)-lohko tulisi olla viimeinen, koska se käsittelee kaikki poikkeukset.