Sobes.tech
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.