КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Клас Exception
Оператор throw
До цих пір ми розглядали виключення, які генерує середовище виконання С#, але це може зробити і сам програміст. Для генерації виключення використовується оператор throw з параметром, що визначає вид виключення. Параметр має бути об'єктом, породженим від стандартного класу System.Exception. Цей об'єкт використовується для передачі інформації про виключення його обробникові. Оператор throw викликається або з параметром, або без нього:
throw [ вираз ];
Форма без параметра застосовується тільки усередині блоку catch для повторної генерації виключення. Тип виразу, що стоїть після throw, визначає тип виключення, наприклад:
throw new DivideByZeroException();
Тут після слова throw записаний вираз, що створює об'єкт стандартного класу “помилка при діленні на 0” за допомогою операції new. При генерації виключення виконання поточного блоку припиняється і відбувається пошук відповідного обробника з передачею йому управління. Обробник вважається знайденим, якщо тип об'єкту, вказаного після throw, або той же що заданий в параметрі catch, або є похідним від нього.
Розглянемо приклад генерації виключень на лістингу 4.12.
Лістинг 4.12. Генерація виключень using System; namespace ConsoleApplication1 { class Test { static void F() { try { G(); } catch (Exception e) { Console.WriteLine("Exception in F: " + e.Message); e = new Exception("F"); throw e; // повторна генерація виключення } } static void G() { throw new Exception("G"); //моделювання виняткових ситуацій }
static void Main() { try { F(); } catch (Exception e) { Console.WriteLine("Exception in Main:" + e.Message); } } } } У методі F виконується проміжна обробка виключення, яка полягає в тому, що на консоль виводиться поле Message перехопленого об'єкту е (про елементи класу Exception розповідається в наступному розділі). Після цього виключення генерується заново. Не дивлячись на те що в обробнику виключення створюється новий об'єкт класу Exception із зміненим рядком інформації,що передається у виключенні, викидається не цей об'єкт, а той, який був перехоплений обробником, тому результат роботи програми наступний:
Exception in F: G Exception in Main: G
Замінимо оператор throw таким оператором:
throw e; В цьому випадку в обробнику буде викинуто виключення, створене в попередньому операторові, і виведення програми зміниться:
Exception in F: G Exception in Main: F
Клас Exception містить декілька корисних властивостей, за допомогою яких можна отримати інформацію про виключення. Вони перераховані в таблиці 4.2. Таблиця 4.2 Властивості класу System.Exception
Дата добавления: 2014-12-27; Просмотров: 422; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |