Sdílet prostřednictvím


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.