Вложение 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-блоки можно также использовать в качестве механизма "глобального перехвата" для обработки тех ошибок, которые не пе- рехватываются внутренними блоками.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.