Algoritmy a programování IV

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.

Příklad

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

Komentář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.