Zpracování výjimky pomocí metody try/catch
Účelem bloku try-catch je zachytit a zpracovat výjimku vygenerovanou pracovním kódem. Některé výjimky je možné zpracovat v catch
bloku a problém se vyřeší bez opakování výjimky. Častěji ale platí, že jedinou věcí, kterou můžete udělat, je zajistit, aby byla vyvolána příslušná výjimka.
Příklad
V tomto příkladu není nejvhodnější výjimkou: ArgumentOutOfRangeException dává smysl pro metodu, IndexOutOfRangeException protože chyba je způsobena index
argumentem 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);
}
}
Komentáře
Kód, který způsobí výjimku, je uzavřen v try
bloku. Příkaz catch
se přidá okamžitě za něj, aby zpracovával IndexOutOfRangeException
, pokud k němu dojde. Blok catch
zpracuje IndexOutOfRangeException
a místo toho vyvolá vhodnější ArgumentOutOfRangeException
. Pokud chcete volajícímu poskytnout co nejvíce informací, zvažte určení původní výjimky jako InnerException nové výjimky. Protože je InnerException vlastnost jen pro čtení, musíte ji přiřadit v konstruktoru nové výjimky.