Sobes.tech
Junior

Kan er in C# meerdere catch-blokken zijn voor het afhandelen van uitzonderingen?

sobes.tech AI

Antwoord van AI

Ja, er kunnen meerdere catch-blokken zijn. Dit stelt je in staat om verschillende soorten uitzonderingen op verschillende manieren af te handelen.

Wanneer een uitzondering optreedt, controleert CLR sequentieel de catch-blokken van boven naar beneden, te beginnen met de eerste. De eerste catch-blok waarvan het type uitzondering overeenkomt met het type van de opgetreden uitzondering of het een basisklasse ervan is, wordt uitgevoerd.

try
{
    // Code die een uitzondering kan veroorzaken
}
catch (ArgumentNullException ex)
{
    // Afhandeling van ArgumentNullException
}
catch (IndexOutOfRangeException ex)
{
    // Afhandeling van IndexOutOfRangeException
}
catch (Exception ex)
{
    // Afhandeling van alle andere uitzonderingen (basisklasse Exception)
    // Deze blok wordt meestal als laatste geplaatst
}
finally
{
    // Code die altijd wordt uitgevoerd, ongeacht of er een uitzondering is opgetreden
}

Het is belangrijk om de catch-blokken te ordenen van meer specifieke naar minder specifieke typen uitzonderingen (basisklassen). De catch (Exception ex)-blok moet als laatste komen, omdat het alle uitzonderingen opvangt.