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.