Partilhar via


Como lidar com uma exceção usando try/catch

O objetivo de um bloco try-catch é capturar e manipular uma exceção gerada pelo código de trabalho. Algumas exceções podem ser tratadas em um catch bloco e o problema resolvido sem que a exceção seja relançada, no entanto, na maioria das vezes, a única coisa que você pode fazer é garantir que a exceção apropriada seja lançada.

Exemplo

Neste exemplo, IndexOutOfRangeException não é a exceção mais apropriada: ArgumentOutOfRangeException faz mais sentido para o método porque o erro é causado pelo index argumento 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 é incluído no try bloco . Uma catch instrução é adicionada imediatamente após ela para manipular IndexOutOfRangeException, se ocorrer. O catch bloco manipula o IndexOutOfRangeException e lança o mais apropriado ArgumentOutOfRangeException em vez disso. A fim de fornecer ao chamador o máximo de informações possível, considere especificar a exceção original como a InnerException da nova exceção. Como a InnerException propriedade é somente leitura, você deve atribuí-la no construtor da nova exceção.