Týden 8
Zpracování vyjímky
Účelem bloku try-catch je zachytit a zpracovat výjimku vygenerovanou pracovním kódem. Některé výjimky se dají zpracovat v catch
bloku a problém se vyřeší, aniž by se výjimka znovu vygenerovala. Častěji se ale jediná věc, kterou můžete udělat, je ujistit se, že je vyvolána příslušná výjimka.
V tomto příkladu není nejvhodnější výjimkou: ArgumentOutOfRangeException dává větší smysl pro metodu, IndexOutOfRangeException protože chybu způsobuje index
argument předaný volajícím.
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);
}
}
Kód, který způsobuje výjimku, je uzavřen v try
bloku . Okamžitě catch
za něj se přidá příkaz pro zpracování IndexOutOfRangeException
, pokud k němu dojde. Blok catch
zpracovává IndexOutOfRangeException
a místo toho vyvolá vhodnější ArgumentOutOfRangeException
. Pokud chcete volajícímu poskytnout co nejvíce informací, zvažte zadání původní výjimky jako InnerException nové výjimky. Vzhledem k tomu, InnerException že vlastnost je jen pro čtení, musíte ji přiřadit v konstruktoru nové výjimky.