class UseFinally {

public static void GenException(int what) { int t;

int[] nums = new int [2];

Console.WriteLine('Получить ' + what); try {

switch(what) { case 0:

t = 10 / what; // сгенерировать ошибку из-за деления на нуль break; case 1:

nums[4] =4; // сгенерировать ошибку индексирования массива break; case 2:

return; // возврат из блока try

}

}

catch (DivideByZeroException) {

Console.WriteLine('Делить на нуль нельзя!'); return; // возврат из блока catch

}

catch (IndexOutOfRangeException) {

Console.WriteLine('Совпадающий элемент не найден.');

}

finally {

Console.WriteLine('После выхода из блока try.');

class FinallyDemo { static void Main() {

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

UseFinally.GenException(i);

Console.WriteLine() ;

}

}

}

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

Получить О

Делить на нуль нельзя После выхода из блока try.

Получить 1

Совпадающий элемент не найден.

После выхода из блока try.

Получить 2

После выхода из блока try.

Как следует из приведенного выше результата, блок finally выполняется независимо от причины выхода из блока try.

И еще одно замечание: с точки зрения синтаксиса блок finally следует после блока try, и формально блоки catch для этого не требуются. Следовательно, блок finally можно ввести непосредственно после блока try, опустив блоки catch. В этом случае блок finally начнет выполняться сразу же после выхода из блока try, но исключения обрабатываться не будут.

Подробное рассмотрение класса Exception

В приведенных выше примерах исключения только перехватывались, но никакой существенной обработке они не подвергались. Как пояснялось выше, в операторе catch допускается указывать тип и переменную исключения. Переменная получает ссылку на объект исключения. Во всех исключениях поддерживаются члены, определенные в классе Exception, поскольку все исключения являются производными от этого класса. В этом разделе будет рассмотрен ряд наиболее полезных членов и конструкторов класса Exception и приведены конкретные примеры использования переменной исключения.

В классе Exception определяется ряд свойств. К числу самых интересных относятся три свойства: Message, StackTrace и Targetsite. Все эти свойства доступны только для чтения. Свойство Message содержит символьную строку, описывающую характер ошибки; свойство StackTrace — строку с вызовами стека, приведшими к исключительной ситуации, а свойство Та г get Site получает объект, обозначающий метод, сгенерировавший исключение.

Кроме того, в классе Exception определяется ряд методов. Чаще всего приходится пользоваться методом ToString (), возвращающим символьную строку с описанием исключения. Этот метод автоматически вызывается,

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату