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.