Практическое руководство. Обработка исключений с помощью блока try-catch (Руководство по программированию на C#)
Блок try-catch предназначен для перехвата и обработки исключений, происходящих в исполняемом коде.Некоторые исключения могут обрабатываться в блоке catch, и проблема решается без повторного создания исключения. Но в большинстве случаев на этом этапе можно только проверить, что создано подходящее исключение.
Пример
В этом примере IndexOutOfRangeException не является наиболее подходящим исключением. Для данного метода больше подходит исключение ArgumentOutOfRangeException, поскольку ошибка вызвана переданным методу параметром index.
class TestTryCatch
{
static int GetInt(int[] array, int index)
{
try
{
return array[index];
}
catch (System.IndexOutOfRangeException e) // CS0168
{
System.Console.WriteLine(e.Message);
// Set IndexOutOfRangeException to the new exception's InnerException.
throw new System.ArgumentOutOfRangeException("index parameter is out of range.", e);
}
}
}
Комментарии
Код, вызывающий исключение, находится в блоке try.Инструкция catch помещается сразу после него, чтобы обрабатывать исключение IndexOutOfRangeException, если оно происходит.В блоке catch исключение IndexOutOfRangeException обрабатывается, и вместо него создается более подходящее исключение ArgumentOutOfRangeException.Чтобы вызывающий объект получил максимально подробную информацию, рекомендуется указать исходное исключение в качестве значения InnerException нового исключения.Поскольку свойство InnerExceptionдоступно только для чтения, его значение необходимо присваивать только в конструкторе нового исключения.
См. также
Ссылки
Исключения и обработка исключений (Руководство по программированию в C#)
Обработка исключений (Руководство по программированию на C#)