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.