Следует особо подчеркнуть, что весь код, выполняемый в блокеtry,контролируется на предмет исключительных ситуаций, в том числе и тех, которые могут возникнуть в результате вызойа метода из самого блокаtry.Исключение, генерируемое методом в блокеtry,может быть перехвачено в том же блоке, если, конечно, этого не будет сделано в самом методе.

В качестве еще одного примера рассмотрим следующую программу, где блокtryпомещается в методеMain (). Из этого блока вызывается методGenException (), в котором и генерируется исключениеIndexOutOfRangeException.Это исключение не перехватывается методомGenException(). Но поскольку методGenException() вызывается из блокаtryв методеMain (), то исключение перехватывается в блокеcatch,связанном непосредственно с этим блокомtry.

/* Исключение может быть сгенерировано одним методом и перехвачено другим. */

using System;

class ExcTest {

// Сгенерировать исключение, public static void GenException()    {

int[] nums = new int [4];

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

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

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

nums[i] = i;

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

}

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

}

}

class ExcDemo2 {

static void Main() {

try {

ExcTest.GenException() ;

}

catch (IndexOutOfRangeException) {

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

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

}

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

}

}

Выполнение этой программы дает такой же результат, как и в предыдущем примере.

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

nums[0]: О

nums[1]: 1

nums[2]: 2

nums[3]: 3

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

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

Как пояснялось выше, методGenException() вызывается из блокаtry,и поэтому генерируемое им исключение перехватывается не в нем, а в блокеcatchвнутри методаMain(). А если бы исключение перехватывалось в методеGenException(), оно не было бы вообще передано обратно методуMain ().

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

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

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