Фільтрація винятків у Visual C # (Sharp)

У всіх наведених прикладах винятків в операторі catch застосовувався тип

Exception:

catch (ExcepNullReferenceExceptiontion) { }

Даний тип перехоплює всі винятки

На рис 53 середу IDE перехопила виняток, застосовуючи спеціальний тип NuiiReferenceException Використання цього типу в операторі catch огранічает перехоплення виключень винятками звернення до null-даними

Вказуючи спеціальний тип винятку, можна відфільтрувати винятку, котие ми хочемо перехоплювати Наприклад, тип NotSupportedException перехватает тільки екземпляри винятків NotSupportedException Далі наводиться приклад використання цього типу:

try {

throw new NotSupportedException(&quotThere is no code&quot)

}

catch (NotSupportedException ex) {

}

У попередньому коді, якщо код в блоці tr y видасть екземпляр виключення типу Exception, то блок catch НЕ буде активований, т к він налаштований на перехоплення толо винятків певного типу

Типи виключень можна комбінувати, щоб відфільтрувати специфічні винятки Спеціальний тип виключення має бути першим винятком пле блоку try:

try {

П ..

}

catch (NotSupportedException ex) {

}

catch (Exception ex) {

}

Комбінування декількох фільтрів винятків дозволяє уникнути необхідний обчислення типу згенерованого винятку Наприклад, без застосування

Можливість ї фільтрування я блок а catch дл я перехоплення а исключени й тип а

NotsupportedException нужн про був о б и застосує ь следующи ї код:

try {

throw new NotsupportedException(&quotThere is no code&quot)

}

catch (Exception ex) {

if (ex is NotsupportedException) {

11     

}

else {

throw ex

}

}

У табл 51 пріводітс я списо до розповсюджені х типо в исключени й і з просторів а име н System, якому е можу т побут ь згенерований и мул і викинуті Ет про далекий о н е вага ь список, т к існую т многи е други е винятки, і можн про даж е создаватся ь собст – венни е исключени я з допомогу ю похідними х классо в о т клас а Exception

Таблиця 51Найбільш поширені типи винятків

Виняток

Опис

Exception

Звичайне виняток загальний контейнер для всіх ілюченій У разі одного з таких винятків, його подробиці можна дізнатися у властивості Message При викиданні виключення цього типу важливо предоавіть конструктору винятку легко піддається розумінню текст повідомлення

ArgumentException

Генерується при виклику методу з недійсний аргументом Зазвичай точну причину можна уать у властивості Message Причиною цього виключив є непрааільное вміст аргументу

Argumen tNu11Exc ер t i on

Генерується при виклику методу з null-аргументом Причиною може бути передача null-значення моду або null-значення одного з аргументів

ArgumentOutOfRangeException

Генерується при виклику методу з аргументом поза межами очікуваного діапазону Хоча це іскленіе виглядає схожим на виключення ArgumentException, воно більш спеціалізоване і направлено на виявлення виходу значення Аргента за межі допустимого діапазону Інформ про допустимий діапазоні см в документації методу або документації реалізації методу При викиданні цього виключення в повідомленні про помилку слід вказувати допустимий діапазон

ArithmeticException

Генерується при виникненні арифметичної помилки

Обробка виключень в С # 153

Таблиця 51(Закінчення)

Исключени е

Описів е

DivideByZeroException

Генерується при спробі поділу на нуль

FormatExcept ion

Генерується при неправильному форматі парамеа Наприклад, якщо метод очікує число, ВІДФОРМОВАНІ точкою, а використовується кома

IndexOutOfRangeException

Генерується при спробі звернутися до елементу масиву поза межами масиву Наприклад, при тортурам звернутися до масиву, який не був виден, або при спробі звернутися до елементу масиву з негативним індексом

InsufficientMemoryException

Генерується при недостатньому обсязі памяті Хоча це виключення зустрічається нечасто, воно може виникнути при спробі виділити масив розміром порядку 5 трильйонів елементів (що може случітя, якщо змінної, що вказує розмір масиву, не було присвоєно правильне значення)

InvalideastException

Генерується при спробі перетворити тип в ноддержіваемий тип Це виключення дуже часто виникає під час перетворення, в якому іользуется спадкування

No t Imp 1 emen t edExc ep t i on

Генерується при спробі використання методів або властивостей, які не були реалізовані Часто у вас не буде часу реалізувати аесь код класу за один раз У таких випадках не залишайте нереалізованих свойст або методів, а викинете замість них виняток Таким чином, ви будете знати, чи не забули ви реалізувати щось

NotSupportedException

Генерується при спробі використання примірниках інтерфейсу і методу, незастосовні в даній ситуації Наприклад, при спробі запису у відкритий буфер читання / запису приводу CD-ROM тільки для читання Спроба читання з екземпляра інтерфейсу виняток, не аизивает

NullReferenceException

Генерується при спробі виклику методу або свотва змінної, якої не було присвоєно действельний екземпляр типу

OutOfMemoryException

Подібно InsufficientMemoryException

Over f1owExc ep t i on

Генерується при спробі виконання непідтриманих операцій з числами, наприклад додавання 2 мільярди і 2 мільярди за допомогою 32-бітового цілого числа

SystemException

Генерується операційною системою Створювати похідні класи з цього класу не можна

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*