2. В цьому модулі:
Ієрархія виключень;
Основи обробки виключень;
Специфіка обробки виключень;
Використання конструкцій checked unchecked;
2
Andrey Gladky
KspDevelop@gmail.com
3. Виникнення помилок при виконанні програми - не завжди
наслідок помилок в коді програми. Помилки можуть бути
викликані неправильними діями користувача або зовнішніми
причинами такими як апаратні збої, недоступність деяких
ресурсів (мереживого диска, сервера баз даних).
Таким чином професійно розроблений додаток повинен бути
готовий до виникненню помилок і забезпечити їх обробку.
Andrey Gladky
KspDevelop@gmail.com 3
4. Використання блока try… catch
Код, що генерує помилку повинен розміщуватись в блоці try
Блок catch дозволяє описати об’єкт, що містить інформацію про
помилку і створити зміну
Andrey Gladky
KspDevelop@gmail.com 4
7. Базовий клас
System.Exception Властивості класу System.Exception
Andrey Gladky KspDevelop@gmail.com 7
Виключення Опис
string Message Містить текст повідомлення із зазначеними причини
виникнення виключення
IDirectory Data
Посилання на набір пар “параметр-значення” . Зазвичай
код, що генерує виключення, додає записи в цей набір.
Код, що перехватив виключення, може використовувати
ці дані для отримання додаткової інформації про причину
виникнення виключення
string Source Містить ім’я збірки, що згенерувала виключення
string StackTrace Містить імена і сигнатури методів, виклик яких призвів
до виникнення виключення
MethodBase
TargetSite
Містить метод, що згенерував виключення
string HelpLink Містить URL документа з описом виключення
Exception
InnerException
Вказує попереднє виключення, якщо поточне було
згенеровано при обробці попереднього виключення
9. SystemException і ApplicationException
SystemException – це клас виключень, які за
звичай являються виключеннями загальної
природи і можуть бути згенеровані будь яким
додатком.
Наприклад, виключення StackOverflowException
генерується при переповнені стека, виключення
ArgumentException (і похідні від нього) можуть
бути згенеровані будь яким додатком, якщо метод
отримує неприпустимі значення аргумента.
АpplicationExcption – від цього класу повині
наслідуватися користувацькі виключення,
специфічні для додатка.
Andrey Gladky
KspDevelop@gmail.com 9
10. Основи обробки виключень
Блок try містить код, який потребує загального
очищення реурсів або відновлення після виклбчення.
Блок catch містить код, який повинен виконуватися при
виникненні виключення. При оголошенні блока catch
вказується тип виключення, для обробоки якого він
призначений. Якщо блок try завершився без генерації
виключення, блок catch не виконується. Якщо в блоці
try не передбачається виникнення виключення, блок
catch може бути вілсутній, але тоді обовязково повинен
бути блок finally.
Блок finally зазвичай містить очищення ресурсів, а
також другі дії, котрі потрібно гарантовано виконати
посля завершення блока try…catch. Наприклад, в цьому
блоці можна виконати закритя файла аба закриття
зєдняння з БД. Блок finally виконується завжди,
незалежно ві виникнення виключення в блоці try. Якщо
немає необхідності виконувати очищення ресурсів,
блок finally може бути відсутнім.
Andrey Gladky
KspDevelop@gmail.com 10
13. Специфіка обробки виключень
Будь який блок коду може генерувати декілька типів виключень (але
одне за раз)
Перехоплення виконується, використовуючи ієрархію класів
Для обробки всіх типів CLS сумісних виключень можна
використовувати блок catch, який перехоплює System.Exception
Вкладенні блоки try
Andrey Gladky
KspDevelop@gmail.com 13
17. Конструкція checked unchecked
При виникненні переповненні під час арифметичних операцій
Під час явного приведення типів
Andrey Gladky
KspDevelop@gmail.com 17
checked
{
expression;
}
OverflowException
DivideByZeroException
byte sum = checked(byte)b1 + b2;
OverflowException
19. Придумати клас студента. І передбачити в ньому наступні
моменти: прізвище, ім'я, по батькові, група, вік, вкладений масив
оцінок по програмуванню, адмініструванню й дизайну. А також
додати методи по роботі з перерахованими даними: можливість
встановлення/одержання оцінки, одержання середнього бала по
заданому предметі, роздруківка даних про студента.
Передбачити виключення в наступних ситуаціях:
При встановлені оцінки по предмету
При одержані середнього бала невідомого предмета
При роздруківці даних про невідомого студента
Andrey Gladky
KspDevelop@gmail.com 19