Share via


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 IndexOutOfRangeExceptionvan 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.