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.