Sobes.tech
Junior

Lehet több catch blokk C#-ban kivételek kezelésére?

sobes.tech MI

Válasz az MI-től

Igen, több catch blokk is lehet. Ez lehetővé teszi, hogy különböző típusú kivételeket külön-külön kezeljünk.

Amikor kivétel fordul elő, a CLR szekvenciálisan ellenőrzi a catch blokkokat felülről lefelé, az elsőtől kezdve. Az első catch blokk kerül végrehajtásra, amelynek kivételtípusa megegyezik a dobott kivétel típusával vagy annak ősosztályával.

try
{
    // Kód, amely kivételt okozhat
}
catch (ArgumentNullException ex)
{
    // ArgumentNullException kivétel kezelése
}
catch (IndexOutOfRangeException ex)
{
    // IndexOutOfRangeException kivétel kezelése
}
catch (Exception ex)
{
    // Minden más kivétel kezelése (az Exception ősosztály)
    // Ezt a blokkot általában utoljára helyezzük el
}
finally
{
    // Kód, amely mindig végrehajtódik, függetlenül attól, hogy kivétel történt-e
}

Fontos, hogy a catch blokkokat a specifikusabb kivételtípusoktól a kevésbé specifikusak felé rendezzük (az ősosztályokat). A catch (Exception ex) blokkot utoljára kell elhelyezni, mert az összes kivételt elfogja.