Dela via


Hantera ett undantag med hjälp av try/catch

Syftet med ett try-catch-block är att fånga och hantera ett undantag som genereras av fungerande kod. Vissa undantag kan hanteras i ett catch block och problemet löses utan att undantaget återaktiveras. Men oftast är det enda du kan göra att se till att rätt undantag utlöses.

Exempel

I det här exemplet IndexOutOfRangeException är inte det lämpligaste undantaget: ArgumentOutOfRangeException är mer meningsfullt för metoden eftersom felet orsakas av argumentet index som skickas in av anroparen.

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);
    }
}

Kommentarer

Koden som orsakar ett undantag omges av try blocket. En catch instruktion läggs till omedelbart efter den för att hantera IndexOutOfRangeException, om den inträffar. Blocket catch hanterar IndexOutOfRangeException och genererar det lämpligare ArgumentOutOfRangeException i stället. För att ge anroparen så mycket information som möjligt kan du överväga att ange det ursprungliga undantaget som det InnerException nya undantaget. Eftersom egenskapen InnerException är skrivskyddad måste du tilldela den i konstruktorn för det nya undantaget.