
- •24)Абстрактные классы
- •25)Абстрактный класс object.Метод ToString() .
- •Переопределение виртуальных методов в обобщенном классе
- •26)Интерфейсы
- •27)Структуры
- •Назначение структур
- •28)Основы обработки исключений
- •Роль обработки исключений в .Net
- •Составляющие процесса обработки исключений в .Net
- •Перехват исключений
- •Последствия неперехвата исключений
- •29)Операторы throw и finally
- •Оператор throw
- •Повторное генерирование исключений
- •Использование блока finally
- •30)Класс Exception
- •Исключения, связанные с поврежденным состоянием (Corrupted State Exceptions)
- •Обработка многочисленных исключений
- •Применение нескольких операторов catch
- •Перехват всех исключений
- •Вложение блоков try
Вложение блоков try
Один блок try может быть вложен в другой. Исключение, генерируемое во внутреннем блоке try и не перехваченное в соответствующем блоке catch, передается во внешний блок try:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
Console.Write("Введите длину массива: ");
try
{
int i = int.Parse(Console.ReadLine());
int[] myArr = new int[i];
Console.WriteLine("\nВведите теперь элементы массива: ");
for (int j = 0; j < i; j++)
{
Console.Write("{0}й элемент: ",j+1);
// Вложенный оператор try
try
{
myArr[j] = int.Parse(Console.ReadLine());
}
catch(OverflowException)
{
Console.WriteLine("Слишком большое число");
}
}
}
catch (FormatException ex)
{
Console.WriteLine("ОШИБКА: " + ex.Message);
}
Console.ReadLine();
}
}
}
Обратите внимание, что во вложенном операторе try не определяется исключение для нарушения формата ввода элементов массива, но при этом, данное исключение перехватывается внешним блоком try. Стоит отметить, что количество вложенных операторов try не ограничено.