Middle
Is er een verschil in de volgorde waarin de catch-blokken worden geschreven?
sobes.tech AI
Antwoord van AI
Ja, dat is er. De catch-blokken worden sequentieel verwerkt. Meer specifieke uitzonderingen moeten vóór de meer algemene komen.
try
{
// Code die een uitzondering kan veroorzaken
}
// Meer specifieke uitzondering
catch (System.FormatException ex)
{
// Afhandeling van formatfout
}
// Minder specifieke uitzondering
catch (System.Exception ex)
{
// Afhandeling van alle andere uitzonderingen
}
Als je de meer algemene uitzondering als eerste plaatst, wordt de meer specifieke catch-blok nooit bereikt voor uitzonderingen die hiervan afleiden. Bijvoorbeeld, FormatException is een afgeleide van Exception. Als catch (Exception ex) eerst komt, vangt hij ook FormatException.
Onjuiste volgorde:
try
{
// Code die een uitzondering kan veroorzaken
}
// Algemene uitzondering
catch (System.Exception ex)
{
// Afhandeling van alle uitzonderingen, inclusief FormatException
}
// Deze blok wordt nooit bereikt voor FormatException,
// omdat hij al wordt opgevangen door het vorige blok
catch (System.FormatException ex)
{
// Deze code is in dit geval niet bereikbaar
}
De C#-compiler geeft een waarschuwing of fout voor een onbereikbaar catch-blok.