Поделиться через


Практическое руководство. Обработка исключений с помощью блока try-catch (Руководство по программированию на C#)

Обновлен: Ноябрь 2007

Блок 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#)

Обработка исключений (Руководство по программированию на C#)