c exception handling tutorial with code examples
Обробка винятків - це метод обробки помилок, які можуть виникнути під час виконання програми. Цей посібник пояснює обробку винятків у C # із прикладами коду:
10 найкращих завантажувачів музики для android
Обробка винятків використовується, щоб переконатись, що потік програми продовжується, навіть якщо є помилка виконання. Виняток становлять об'єкти, які викидаються під час виникнення будь-якої помилки виконання.
Якщо винятки не обробляються, тоді C # видасть повідомлення про виняток і завершить роботу програми, саме тут в картину входить обробка винятків.
=> Прочитайте тут посібник для початківців на C #
Що ви дізнаєтесь:
- Що таке винятки?
- Ключові слова для обробки винятків
- Класи винятків, представлені в C #
- Обробка винятків у C #
- Висновок
- Рекомендована література
Що таке винятки?
Виняток становлять безпрецедентні помилки, які можуть виникати всередині вашої програми під час виконання. У більшості випадків програмісти можуть легко виявити деякі помилки, такі як перевірка чи перевірка нуля, або під час перевірки деяких значень.
Але бувають певні моменти, коли ми не можемо передбачити, що або коли з’явиться помилка. Наприклад, скажімо, я шукаю файл у певному місці. Моя програма буде працювати абсолютно нормально, поки файл не буде присутній, і якщо якимось чином файл буде видалений, моя програма видасть помилку.
Винятки не трапляються регулярно, але все ж можуть траплятися, і ви завжди хочете з ними поводитися обережно. Для їх обробки ми використовуємо обробку винятків.
Щоразу, коли виникає помилка, ми говоримо, що її викидає, 'кинув' - це об'єкт з System.Exception клас в C #. System.Exception class пропонує різні методи та властивості, що дають детальну інформацію про помилку, з якою щойно зіткнулася ваша програма.
Як властивість трасування стека, що забезпечує стек, для якого виникла проблема, або властивість Message, що містить опис винятку.
Ключові слова для обробки винятків
Винятки пропонують процес управління певною частиною програми, так що навіть якщо в цій частині є виняток, тоді керування програмою передається іншій частині програми. У C # обробка винятків в основному побудована навколо чотирьох ключових слів: кинути, спробувати, зловити і нарешті .
кинути
Як ми вже обговорювали, throw є об'єктом з System.Exception класу в C #. Це дозволяє програмі видавати помилку щоразу, коли вона стикається з такою.
спробуй
Спроб блокує блок коду, який може спричинити програму для винятку. За ним слід один або кілька блоків лову.
улов
Коли блок спроб зустрічає виняток, він забезпечує керування блоком catch, щоб зловити виняток. Блок catch також може містити набір кодів, які програмі потрібно виконати у випадку винятку, або він може просто зловити виняток і нічого не робити, залежно від сценарію та вимог.
нарешті
Остаточний блок використовується для виконання певного фрагмента коду або інструкції незалежно від виникнення винятку. Нарешті, блок завжди виконується, і він може бути виконаний відразу після блоку спроби, якщо програма не знаходить жодного винятку, або він може бути виконаний після блоку catch, коли програма ловить виняток.
Класи винятків, представлені в C #
Всі винятки в C # походять прямо чи опосередковано з System.Exception клас.
Давайте коротко розглянемо деякі найпоширеніші винятки:
- System.IO.IOException: Він обробляє будь-які помилки, пов'язані з входом і виходом.
- System.DividedByZeroException: Обробляє помилку, викинуту, коли число ділиться на нуль.
- System.NullReferenceException : Обробляє будь-яку помилку, яка може виникнути при посиланні на нульовий об'єкт.
- System.IndexOutOfRangeException: Обробляє помилку, викинуту, коли програма намагається отримати доступ до індексу, який виходить за межі діапазону для масиву.
- System.OutOfMemoryException: Обробляє помилку, викликана через недостатню присутність пам'яті.
Обробка винятків у C #
C # має дуже чітко визначене рішення для обробки будь-якого типу винятків, які можуть виникнути за допомогою блоку try and catch. За допомогою цього блоку основний виклад програми можна відокремити від інших тверджень.
основні запитання та відповіді на інтерв’ю для SQL pdf
Приклад:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); } } }
У наведеному вище прикладі ми додали наш код для відкриття файлу під блоком try. Оскільки ми не вказали жодного дійсного шляху до файлу, код повинен викликати помилку. Тепер ми виявили помилку в нашому блоці catch. Якщо файл не існує у вказаному шляху до файлу, тоді код викличе FileNotFoundException.
Цей виняток буде схоплений блоком catch, де ми вже визначили очікуваний виняток. Тепер давайте уявимо, якщо наш код видасть якесь інше виняток, крім того, що ми вже визначили, тоді наш блок не зможе його вловити. Щоб зловити будь-яке загальне виняток, ми додамо ще один блок catch.
Давайте подивимось на наш оновлений код:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.ReadLine(); } } }
Цей загальний блок catch зможе вловити всі винятки, які можуть бути внесені всередину блоку try. Тепер давайте також додамо блок нарешті, щоб завершити це. Щоб спростити це, давайте просто надрукуємо повідомлення, використовуючи блок нарешті.
найкраща програма для перевірки темп процесора
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
Тут ми щойно додали блок нарешті з простим повідомленням. Ви також можете додати кілька спеціальних операторів у блок. Але загальна структура програми залишатиметься такою, як показано тут.
Блок Нарешті завжди буде виконаний незалежно від того, є виняток чи ні. Програма розпочнеться з блоку try, а потім перейде безпосередньо до блоку нарешті, якщо помилок / винятків немає. Якщо він зіткнеться з винятком, він спочатку перейде до catch, а потім виконає остаточний блок.
Чи існує умова, коли блок нарешті не буде виконаний?
Як випливає з назви, кінцевий блок виконується в кінці і є заключним блоком коду, який буде виконаний. Нарешті, блок завжди буде виконуватися під час запуску програми. Єдиний раз, коли нарешті блок не буде виконаний, це те, коли програма аварійно завершує роботу або навмисно вбивається за допомогою команди процесу.
Висновок
Якщо винятки не обробляються належним чином, вони спричинять помилки у вашій програмі. Якщо ви не використовували блоки try / catch де-небудь у коді, ваша програма перерве повідомлення з повідомленням про виняток. Для звичайного користувача буде дуже важко простежити помилку назад до вихідного коду та усунути її.
Отже, завжди є гарною практикою забезпечувати обробку винятків у вашій програмі.
Зразок коду
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApp1 { class Program { static void Main(string() args) { try { File.OpenRead('InvalidFile'); } catch (FileNotFoundException ex) { Console.WriteLine(ex.ToString()); } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Console.WriteLine('Finally block executed'); } Console.ReadLine(); } } }
=> Подивіться нашу повну серію навчальних програм C # тут
Рекомендована література
- Підручник з функцій / методів C # із прикладами коду
- Підручник з Python DateTime із прикладами
- Підручник SVN: Управління вихідним кодом за допомогою Subversion
- Підручник з рядків C # - Рядові методи з прикладами коду
- Обробка винятків у C ++
- Підручник з черепахи SVN: Редакції у сховищі коду
- Підручник з AWS CodeBuild: Витяг коду з Maven Build
- Як обробляти винятки у скриптах Groovy SoapUI - Підручник No11 з SoapUI