SlideShare a Scribd company logo
.NET Framework і C#
Модуль 5. Обробка виключень
В цьому модулі:
 Ієрархія виключень;
 Основи обробки виключень;
 Специфіка обробки виключень;
 Використання конструкцій checked unchecked;
2
Andrey Gladky
KspDevelop@gmail.com
Виникнення помилок при виконанні програми - не завжди
наслідок помилок в коді програми. Помилки можуть бути
викликані неправильними діями користувача або зовнішніми
причинами такими як апаратні збої, недоступність деяких
ресурсів (мереживого диска, сервера баз даних).
Таким чином професійно розроблений додаток повинен бути
готовий до виникненню помилок і забезпечити їх обробку.
Andrey Gladky
KspDevelop@gmail.com 3
Використання блока try… catch
 Код, що генерує помилку повинен розміщуватись в блоці try
 Блок catch дозволяє описати об’єкт, що містить інформацію про
помилку і створити зміну
Andrey Gladky
KspDevelop@gmail.com 4
Andrey Gladky
KspDevelop@gmail.com 5
Демонстрація
Ієрархія виключень
Andrey Gladky
KspDevelop@gmail.com 6
Базовий клас
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
Вказує попереднє виключення, якщо поточне було
згенеровано при обробці попереднього виключення
Andrey Gladky
KspDevelop@gmail.com 8
Демонстрація
SystemException і ApplicationException
 SystemException – це клас виключень, які за
звичай являються виключеннями загальної
природи і можуть бути згенеровані будь яким
додатком.
Наприклад, виключення StackOverflowException
генерується при переповнені стека, виключення
ArgumentException (і похідні від нього) можуть
бути згенеровані будь яким додатком, якщо метод
отримує неприпустимі значення аргумента.
 АpplicationExcption – від цього класу повині
наслідуватися користувацькі виключення,
специфічні для додатка.
Andrey Gladky
KspDevelop@gmail.com 9
Основи обробки виключень
 Блок try містить код, який потребує загального
очищення реурсів або відновлення після виклбчення.
 Блок catch містить код, який повинен виконуватися при
виникненні виключення. При оголошенні блока catch
вказується тип виключення, для обробоки якого він
призначений. Якщо блок try завершився без генерації
виключення, блок catch не виконується. Якщо в блоці
try не передбачається виникнення виключення, блок
catch може бути вілсутній, але тоді обовязково повинен
бути блок finally.
 Блок finally зазвичай містить очищення ресурсів, а
також другі дії, котрі потрібно гарантовано виконати
посля завершення блока try…catch. Наприклад, в цьому
блоці можна виконати закритя файла аба закриття
зєдняння з БД. Блок finally виконується завжди,
незалежно ві виникнення виключення в блоці try. Якщо
немає необхідності виконувати очищення ресурсів,
блок finally може бути відсутнім.
Andrey Gladky
KspDevelop@gmail.com 10
Блок finally
 Виконання коду не залежно від помилки
Andrey Gladky
KspDevelop@gmail.com 11
Andrey Gladky
KspDevelop@gmail.com 12
Демонстрація
Специфіка обробки виключень
 Будь який блок коду може генерувати декілька типів виключень (але
одне за раз)
 Перехоплення виконується, використовуючи ієрархію класів
 Для обробки всіх типів CLS сумісних виключень можна
використовувати блок catch, який перехоплює System.Exception
 Вкладенні блоки try
Andrey Gladky
KspDevelop@gmail.com 13
Andrey Gladky
KspDevelop@gmail.com 14
Демонстрація
Повторне генерування виключень
 Ключове слово throw
 Об’єкт класу, наслідник від Exception
Andrey Gladky
KspDevelop@gmail.com 15
Andrey Gladky
KspDevelop@gmail.com 16
Демонстрація
Конструкція checked unchecked
 При виникненні переповненні під час арифметичних операцій
 Під час явного приведення типів
Andrey Gladky
KspDevelop@gmail.com 17
checked
{
expression;
}
OverflowException
DivideByZeroException
byte sum = checked(byte)b1 + b2;
OverflowException
Andrey Gladky
KspDevelop@gmail.com 18
Демонстрація
Придумати клас студента. І передбачити в ньому наступні
моменти: прізвище, ім'я, по батькові, група, вік, вкладений масив
оцінок по програмуванню, адмініструванню й дизайну. А також
додати методи по роботі з перерахованими даними: можливість
встановлення/одержання оцінки, одержання середнього бала по
заданому предметі, роздруківка даних про студента.
Передбачити виключення в наступних ситуаціях:
 При встановлені оцінки по предмету
 При одержані середнього бала невідомого предмета
 При роздруківці даних про невідомого студента
Andrey Gladky
KspDevelop@gmail.com 19

More Related Content

PDF
Monitoring and Optimization of Java Applications (Ukrainian)
PDF
iPhone Objective-C Development (ukr) (2009)
PDF
Tdd, ти де?
PPTX
All You Need to Know to Start Automating Your Tests
PDF
Xdebug (ukr)
PDF
Php unit. Y. Muzychushun
PPTX
Wcf module 3.3
PPTX
Uml module 5
Monitoring and Optimization of Java Applications (Ukrainian)
iPhone Objective-C Development (ukr) (2009)
Tdd, ти де?
All You Need to Know to Start Automating Your Tests
Xdebug (ukr)
Php unit. Y. Muzychushun
Wcf module 3.3
Uml module 5

Viewers also liked (17)

PPTX
Net framework і c# module 7_old
PPTX
Net framework і c# module 11
PPTX
Module 1.1
PPTX
Win api module_3.4
PPTX
Wcf module 3.6
PPTX
Module 4 2
PPTX
System programing module 1
PPTX
Uml module 3
PPTX
Wcf module 3.1
PPTX
Module 1.1
PPTX
Wcf module 3.8
PPTX
Net framework і c# module 14
PPTX
Wcf module 1
PPTX
Win api module_1.2
PPTX
Win api module_1.1
PPTX
Win api module_2.0_gdi+
PPTX
Ntfs & fat32
Net framework і c# module 7_old
Net framework і c# module 11
Module 1.1
Win api module_3.4
Wcf module 3.6
Module 4 2
System programing module 1
Uml module 3
Wcf module 3.1
Module 1.1
Wcf module 3.8
Net framework і c# module 14
Wcf module 1
Win api module_1.2
Win api module_1.1
Win api module_2.0_gdi+
Ntfs & fat32
Ad

Similar to Net framework і c# module 5 (14)

PPTX
PDF
C# OOP exception
PPTX
Advanced c sharp part 3
PPTX
08 Exceptions and AOP
PPTX
Net framework і c# module 9
PPTX
Net Framework and C# Module 3 4. Inheritance, Abstractions
PPTX
Net framework і c# lesson1
PPTX
Net framework і c# lesson1
PPTX
System programing module 3
PPTX
Net Framework and c# Lesson 1
PPTX
Checked_vs_Unchecked_2Презентация на тему исключений.pptx
PDF
Do comments!
PPTX
Руйнуємо .NET Міфи
PPTX
Multithreading and parallelism
C# OOP exception
Advanced c sharp part 3
08 Exceptions and AOP
Net framework і c# module 9
Net Framework and C# Module 3 4. Inheritance, Abstractions
Net framework і c# lesson1
Net framework і c# lesson1
System programing module 3
Net Framework and c# Lesson 1
Checked_vs_Unchecked_2Презентация на тему исключений.pptx
Do comments!
Руйнуємо .NET Міфи
Multithreading and parallelism
Ad

More from Andrii Hladkyi (20)

PPTX
Net framework and C# module 17. Serialization
PPTX
NET Framework and C# Module 12.2. Garbage Collector
PPTX
System programing module 2. Threads
PPTX
System programing module 1. Processes
PPTX
NET Framework and C# Module 6.2. Generics
PPTX
NET Framework and C# Module 6. Delegates, Events
PPTX
NET Framework and C# Module 5. Interfaces
PPTX
Net Framework and c# module 2. OOP
PPTX
Wpf module 2
PPTX
Wpf module 1
PPTX
Msp module 3
PPTX
Msp module 2
PPTX
Msp module 1
PPTX
Ado.net module 2
PPTX
Ado.net module 1
PPTX
Design pattern module 1
PPTX
Win api module_2.0_gdi+
PPTX
Win api module_1.1_ok
PPTX
Win api module_6.2
PPTX
Design pattern module 1
Net framework and C# module 17. Serialization
NET Framework and C# Module 12.2. Garbage Collector
System programing module 2. Threads
System programing module 1. Processes
NET Framework and C# Module 6.2. Generics
NET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 5. Interfaces
Net Framework and c# module 2. OOP
Wpf module 2
Wpf module 1
Msp module 3
Msp module 2
Msp module 1
Ado.net module 2
Ado.net module 1
Design pattern module 1
Win api module_2.0_gdi+
Win api module_1.1_ok
Win api module_6.2
Design pattern module 1

Net framework і c# module 5

  • 1. .NET Framework і C# Модуль 5. Обробка виключень
  • 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
  • 11. Блок finally  Виконання коду не залежно від помилки Andrey Gladky KspDevelop@gmail.com 11
  • 13. Специфіка обробки виключень  Будь який блок коду може генерувати декілька типів виключень (але одне за раз)  Перехоплення виконується, використовуючи ієрархію класів  Для обробки всіх типів CLS сумісних виключень можна використовувати блок catch, який перехоплює System.Exception  Вкладенні блоки try Andrey Gladky KspDevelop@gmail.com 13
  • 15. Повторне генерування виключень  Ключове слово throw  Об’єкт класу, наслідник від Exception Andrey Gladky KspDevelop@gmail.com 15
  • 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