гдеЕхсерТуре— это тип возникающей исключительной ситуации. Когда исключение генерируется операторомtry,оно перехватывается составляющим ему пару операторомcatch,который затем обрабатывает это исключение. В зависимости от типа исключения выполняется и соответствующий операторcatch.Так, если типы генерируемого исключения и того, что указывается в оператореcatch,совпадают, то выполняется именно этот оператор, а все остальные пропускаются. Когда исключение перехватывается, переменная исключенияexObполучает свое значение.

На самом деле указывать переменнуюexObнеобязательно. Так, ее необязательно указывать, если обработчику исключений не требуется доступ к объекту исключения, что бывает довольно часто. Для обработки исключения достаточно и его типа. Именно поэтому во многих примерах программ, приведенных в этой главе, переменнаяexObопускается.

Следует, однако, иметь в виду, что если исключение не генерируется, то блок оператораtryзавершается как обычно, и все его операторыcatchпропускаются. Выполнение программы возобновляется с первого оператора, следующего после завершающего оператораcatch.Таким образом, операторcatchвыполняется лишь в том случае, если генерируется исключение.

Простой пример обработки исключительной ситуации

Рассмотрим простой пример, демонстрирующий отслеживание и перехватывание исключения. Как вам должно быть уже известно, попытка индексировать массив за его границами приводит к ошибке. Когда возникает подобная ошибка, система CLR генерирует исключениеIndexOutOfRangeException,которое определено как стандартное для среды .NET Framework. В приведенной ниже программе такое исключение генерируется намеренно и затем перехватывается.

// Продемонстрировать обработку исключительной ситуации.

using System;

class ExcDemol {

static void Main() {

int[] nums = new int [4];

try {

Console.WriteLine("До генерирования исключения.");

// Сгенерировать исключение в связи с выходом индекса за границы массива.

for(int i=0; i < 10; i++)    {

nums[i] = i;

Console.WriteLine("nums[{0}]:    {1}",    i,    nums[i]);

}

Console.WriteLine("He подлежит выводу");

}

catch (IndexOutOfRangeException) {

// Перехватить исключение.

Console.WriteLine("Индекс вышел за границы массива!");

}

Console.WriteLine("После блока перехвата исключения.");

}

}

При выполнении этой программы получается следующий результат.

До генерирования исключения.

nums[0]: О

nums[1]: 1

nums[2]: 2

nums[3]: 3

Индекс вышел за границы массива!

После блока перехвата исключения.

Перейти на страницу:

Похожие книги