Como manipular uma exceção usando try/catch

A finalidade de um bloco try-catch é capturar e manipular uma exceção gerada pelo código de trabalho. Algumas exceções podem ser manipuladas em um bloco catch e o problema pode ser resolvido sem que a exceção seja gerada novamente. No entanto, com mais frequência, a única coisa que você pode fazer é certificar-se de que a exceção apropriada seja gerada.

Exemplo

Neste exemplo, IndexOutOfRangeException não é a exceção mais apropriada: ArgumentOutOfRangeException faz mais sentido para o método porque o erro é causado pelo argumento index passado pelo chamador.

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

Comentários

O código que causa uma exceção fica dentro do bloco try. Uma instrução catch é adicionada imediatamente após para lidar com IndexOutOfRangeException, caso ocorra. O bloco catch manipula o IndexOutOfRangeException e gera o ArgumentOutOfRangeException mais apropriado. Para fornecer ao chamador tantas informações quanto possível, considere especificar a exceção original como o InnerException da nova exceção. Uma vez que a propriedade InnerException é somente leitura, você precisa atribuí-la no construtor da nova exceção.