Вложение try-блоков

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002134.docx

Вложение try-блоков

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

 

Пример.

В следующей программе исключение типа IndexOutOfRangeException

перехватывается не внутренним try-блоком, а внешним.

 

using System; class Demo

{

public static void Main()

{

// Здесь массив a длиннее массива b. int[] a = { 4, 8, 16, 32, 64, 128, 256, 512 };

int[] b = { 2, 0, 4, 4,    0,    8 };

 

 

try


{        // Внешний try-блок.

for (int i = 0; i < a.Length; i++)

{

try

{           // Вложенный try-блок.

Console.WriteLine (a[i] + " / " + b[i] + " = " + a[i] / b[i]);

}

catch (DivideByZeroException)

{

Console.WriteLine ("На ноль делить нельзя!");

}

}

}

 

catch (IndexOutOfRangeException)

{

Console.WriteLine ("Нет соответствующего элемента."); Console.WriteLine ("Неисправимая ошибка. " +

"Программа завершена.");

return;

}

. . . . . . . . . .

}

}

 

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

 

Однако нарушение границ массива перехватывается внешним try-

блоком и заставляет программу завершиться.

 

Внешние try-блоки можно также использовать в качестве механизма "глобального перехвата" для обработки тех ошибок, которые не пе- рехватываются внутренними блоками.