Студопедия

КАТЕГОРИИ:


Архитектура-(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

 

Властивість Опис
HelpLink URL файла справки з описом помилки
Message Текстовий опис помилки. Встановлюється при створенні об'єкту. Властивість доступна тільки для читання
Source Ім'я об'єкту або додатку, яке згенерувало помилку
StаскTrace Послідовність викликів, які привели до виникнення помилки. Властивість доступна тільки для читання
InnerException Містить посилання на виключення, що послужило причиною генерації поточного виключення
TargetSite Метод, що викинув виключення

 




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 422; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.