Спробуйте ... Зловити ... Нарешті, Кидає, визначена користувачем виняток у VB.Net

Зміст:

Anonim

Що таке виняток?

Виняток стосується проблеми, яка виникає під час виконання програми. Це викликано несподіваною обставиною. Хороший приклад - це коли ви виконуєте операцію ділення, а потім ділите на нуль (0). Буде застосовано виняток.

У цьому посібнику з Visual Basic ви дізнаєтесь:

  • Що таке виняток?
  • Що таке обробка винятків?
  • Синтаксис Try / Catch
  • Приклад обробки винятків
  • Визначені користувачем винятки
  • Кидання предметів

Що таке обробка винятків?

За винятками, ви можете передати управління програмою з однієї частини в іншу. У VB.NET винятки обробляються за допомогою таких 4 ключових слів:

Ключове слово Деталь
Спробуйте Робота блоку "Спробувати" полягає у визначенні кодового блоку, для якого буде активовано певний виняток. За ним повинен слідувати блок (и) catch.
Улов Вилучення винятку здійснюється в цьому блоці. Це обробник винятків, у якому обробляється виняток.
Нарешті Використовуйте блок Нарешті, щоб запустити набір операторів незалежно від того, сталося виняток чи ні.
Кинути Виникнення виникає після виникнення проблеми. Це робота ключового слова Throw.

Синтаксис Try / Catch

Інструкції Try / Catch приймають синтаксис, наведений нижче:

Try[ try_Statement(s) ][ Exit Try ][ Catch [ exception_name [ As type ] ] [ When expression ][ catch_Statement(s) ][ Exit Try ] ][ Catch… ][ Finally[ finally_Statement(s) ] ]End Try

Блок Try / Catch повинен оточувати код, який може спричинити виняток. Цей код відомий як захищений код. Ви можете використовувати декілька операторів catch, коли потрібно ловити різні типи винятків.

Приклад обробки винятків

За допомогою операторів Try / Catch ви можете відокремити свій звичайний програмний код від системи обробки помилок. Давайте продемонструємо, як обробляти винятки, використовуючи ключові слова Try, Catch і, нарешті.

Крок 1) Створіть нову консольну програму.

Крок 2) Використовуйте цей код:

Module Module1Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)Dim answer As IntegerTryanswer = n1 \ n2Catch ex As DivideByZeroExceptionConsole.WriteLine("Exception: {0}", ex)FinallyConsole.WriteLine("Answer is: {0}", answer)End TryEnd SubSub Main()divisionFunction(4, 0)Console.ReadKey()End SubEnd Module

Крок 3) Натисніть кнопку Пуск на панелі інструментів, щоб виконати код. Ви повинні отримати наступний результат:

Ось скріншот коду:

Пояснення коду:

  1. Створення модуля з іменем Module1.
  2. Створення підпроцедури з іменем DivisionFunction з двома цілими аргументами n1 та n2. ByVal - це ключове слово VB.NET, яке зазначає, що значення аргументів передаватимуться за значенням.
  3. Створення цілочисельної змінної з іменем відповідь.
  4. Початок блоку Try / Catch. Нам потрібно оточити код, який, як ми підозрюємо, може викликати виняток цим блоком.
  5. Виконання операції поділу між значеннями змінних n1 та n2. Результат операції ділення присвоюється змінній відповіді. Цей код може викликати виняток, наприклад, коли ми ділимо число на нуль, отже, ми оточили його блоками Try / Catch.
  6. Виловлювання винятку з назвою DivideByZeroException та присвоєння згенерованого повідомлення про виняток ex.
  7. Друк тексту на консолі, щоб повідомити користувача про тип / ім'я винятку, який було викликано.
  8. Блок нарешті. Це буде виконано незалежно від того, чи було вилучено виняток чи ні.
  9. Друк тексту на консолі, що відображає результат операції поділу.
  10. Кінець блоку Try, тобто кінець коду обробки помилок.
  11. Кінець поділу Функціональна підпроцедура.
  12. Початок основної підпроцедури.
  13. Виклик / виклик підпроцедури DivisionFunction. Тут передаються значення двох цілочисельних аргументів. Значення n1 = 4 і n2 = 0. Це означає, що операція ділення буде дорівнювати 4 \ 0, тобто n1 \ n2.
  14. Призупиняючи вікно консолі, чекаючи, поки користувач вживе заходів для її закриття.
  15. Кінець основної підпроцедури.
  16. Кінець модуля.

Визначені користувачем винятки

VB.NET дозволяє визначити власні винятки. Ви можете отримати визначені користувачем класи винятків із класу ApplicationException. Продемонструємо це на прикладі:

Крок 1) Створіть нову консольну програму.

Крок 2) Використовуйте такий код:

Module Module1Public Class HeightIsZeroException : Inherits ApplicationExceptionPublic Sub New(ByVal text As String)MyBase.New(text)End SubEnd ClassPublic Class HeightDim height As Integer = 0Sub showHeight()If (height = 0) ThenThrow (New HeightIsZeroException("Zero Height found"))ElseConsole.WriteLine("Height is: {0}", height)End IfEnd SubEnd ClassSub Main()Dim hght As Height = New Height()Tryhght.showHeight()Catch ex As HeightIsZeroExceptionConsole.WriteLine("HeightIsZeroException: {0}", ex.Message)End TryConsole.ReadKey()End SubEnd Module

Крок 3) Натисніть кнопку Пуск у верхній панелі, щоб виконати код. Ви повинні отримати наступний результат:

Ось скріншот коду:

Пояснення коду:

  1. Створення модуля з іменем Module1.
  2. Створення класу винятків з назвою HeightIsZeroException. Клас успадковує весь клас ApplicationException.
  3. Створення підпроцедури з назвою New. Знадобиться один рядковий аргумент з іменем text.
  4. Виклик конструктора базового класу та передача йому вищезазначеного аргументу.
  5. Кінець нової підпроцедури.
  6. Кінець класу HeightIsZeroException.
  7. Створення класу на ім’я Висота. Його модифікатор відкритого доступу є Public, що означає, що він буде загальнодоступним.
  8. Створення цілочисельної змінної з назвою Height та ініціалізація її значення до 0.
  9. Створення підпроцедури з іменем showHeight ().
  10. Перевірка, коли значення змінної Height дорівнює 0. Ми використовували умову If ... Then.
  11. Викинути HeightIsZeroException, якщо вказана вище умова відповідає дійсності. Повідомлення Zero Height Found буде показано, коли буде вилучено цей виняток.
  12. Інша частина, що виконується, якщо умова If не відповідає дійсності.
  13. Повідомлення для друку на консолі, показуючи висоту, коли вона не дорівнює 0.
  14. Кінець умови If.
  15. Кінець підпроцедури showHeight ().
  16. Кінець класу Висота.
  17. Початок основної підпроцедури.
  18. Створення об'єкта з ім'ям Висота як екземпляр класу Висота.
  19. Початок блоку обробки винятків.
  20. Виклик підпроцедури showHeight (), визначеної у класі Height. Ми використовували об’єкт цього класу для доступу до цього методу. Цей рядок може спричинити виняток. Тому ми оточили його кодом обробки винятків.
  21. Перехоплення винятку HeightIsZeroException як об’єкта, коли він трапляється.
  22. Повідомлення для друку на консолі при виявленні HeightIsZeroException.
  23. Кінець блоку обробки винятків.
  24. Призупиніть вікно консолі, чекаючи, поки користувач вживе заходів для її закриття.
  25. Кінець основної підпроцедури.
  26. Кінець модуля.

Кидання предметів

В обробці винятків ви можете кинути предмет. Однак об'єкт повинен бути похідним від System. Клас винятків, прямо чи опосередковано. Наприклад:

Крок 1) Створіть нову консольну програму.

Крок 2) Використовуйте такий код:

Module Module1Sub Main()TryThrow New ApplicationException("Throwing a custom exception")Catch ex As ExceptionConsole.WriteLine(ex.Message)FinallyConsole.WriteLine("The Finally Block")End TryConsole.ReadKey()End SubEnd Module

Крок 3) Натисніть кнопку Пуск у верхній панелі, щоб виконати код. Ви повинні отримати наступне:

Ось скріншот коду:

Пояснення коду:

  1. Створення модуля з іменем Module1.
  2. Початок основної підпроцедури.
  3. Початок коду обробки помилок.
  4. Викидання об'єкта виключення. Цей код може генерувати виняток, отже, ми оточили його блоком Try / Catch.
  5. Перехоплення винятку як об’єкта, коли рядок видає виняток.
  6. Друк повідомлення про виняток на консолі на випадок, якщо воно відбудеться.
  7. Блок Нарешті для запуску виловлення чи ні.
  8. Повідомлення для друку на консолі при виконанні блоку Нарешті.
  9. Кінець коду обробки винятків.
  10. Призупиніть консоль на деякий час, чекаючи, поки користувач вживе заходів для її закриття.
  11. Кінець основної підпроцедури.
  12. Кінець модуля.

Резюме

  • Виняток стосується проблеми, яка виникає під час виконання програми, спричиненої несподіваною обставиною.
  • Якщо ви підозрюєте, що якийсь код створить виняток, оточіть його блоком Try / Catch.
  • Блок «Нарешті» постає після блоку «Спробувати / зловити» і виконує незалежно від вилучення винятку.
  • VB.NET дозволяє нам створювати власні винятки.