Middle
Van különbség abban, hogy milyen sorrendben írjuk a catch blokkokat?
sobes.tech MI
Válasz az MI-től
Igen, van. A catch blokkok egymás után kerülnek feldolgozásra. A specifikusabb kivételeknek a általánosabbak előtt kell lenniük.
try
{
// Kód, amely kivételt okozhat
}
// Specifikusabb kivétel
catch (System.FormatException ex)
{
// Formátumhiba kezelése
}
// Kevésbé specifikus kivétel
catch (System.Exception ex)
{
// Minden más kivétel kezelése
}
Ha az általánosabb kivételt helyezed el elsőként, akkor a specifikusabb catch blokk soha nem lesz elérhető azokhoz a kivételekhez, amelyek az általánosabbból származnak. Például, a FormatException az Exception leszármazottja. Ha az catch (Exception ex) az első, akkor az is elkapja a FormatException-t.
Helytelen sorrend:
try
{
// Kód, amely kivételt okozhat
}
// Általános kivétel
catch (System.Exception ex)
{
// Minden kivétel kezelése, beleértve a FormatException-t is
}
// Ez a blokk soha nem lesz elérhető a FormatException esetén,
// mert már az előző blokk elkapta
catch (System.FormatException ex)
{
// Ez a kód ebben az esetben nem érhető el
}
A C# fordító figyelmeztetést vagy hibát fog adni az elérhetetlen catch blokk miatt.