Een uitzondering afhandelen met try/catch
Het doel van een try-catch-blok is het vangen en verwerken van een uitzondering die wordt gegenereerd door werkende code. Sommige uitzonderingen kunnen in een catch
blok worden verwerkt en het probleem wordt opgelost zonder dat de uitzondering opnieuw wordt afgeworpen. Het enige wat u kunt doen, is echter vaker ervoor zorgen dat de juiste uitzondering wordt gegenereerd.
Opmerking
In dit voorbeeld IndexOutOfRangeException is dit niet de meest geschikte uitzondering: ArgumentOutOfRangeException is logischer voor de methode omdat de fout wordt veroorzaakt door het index
argument dat door de aanroeper is doorgegeven.
static int GetInt(int[] array, int index)
{
try
{
return array[index];
}
catch (IndexOutOfRangeException e) // CS0168
{
Console.WriteLine(e.Message);
// Set IndexOutOfRangeException to the new exception's InnerException.
throw new ArgumentOutOfRangeException("index parameter is out of range.", e);
}
}
Opmerkingen
De code die een uitzondering veroorzaakt, wordt in het try
blok ingesloten. Er wordt direct na het afhandelen IndexOutOfRangeException
van een instructie een catch
instructie toegevoegd, als deze zich voordoet. Het catch
blok verwerkt de IndexOutOfRangeException
en gooit in plaats daarvan de juister ArgumentOutOfRangeException
. Als u de beller zoveel mogelijk informatie wilt geven, kunt u overwegen om de oorspronkelijke uitzondering op te geven als de InnerException nieuwe uitzondering. Omdat de InnerException eigenschap het kenmerk Alleen-lezen heeft, moet u deze toewijzen in de constructor van de nieuwe uitzondering.