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 определяется ряд свойств. К числу самых интересных относятся три свойства: Message, StackTrace и Targetsite. Все эти свойства доступны только для чтения. Свойство Message содержит символьную строку, описывающую характер ошибки; свойство StackTrace — строку с вызовами стека, приведшими к исключительной ситуации, а свойство Та г get Site получает объект, обозначающий метод, сгенерировавший исключение.
Кроме того, в классе Exception определяется ряд методов. Чаще всего приходится пользоваться методом ToString (), возвращающим символьную строку с описанием исключения. Этот метод автоматически вызывается,
