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.