Обробка винятків у VB.Net: приклади обробки Try & Catch

Що таке виняток у VB.Net?

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

Що таке обробка винятків у VB.Net?

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

ключове слово деталь
пробувати Робота блоку Try полягає у визначенні блоку коду, для якого буде активовано певний виняток. За ним має слідувати блок(и) catch.
Залучайте Перехоплення винятків виконується в цьому блоці. Це обробник винятків, у якому обробляється виняткова ситуація.
в кінці кінців Використовуйте блок Finally, щоб запустити набір інструкцій незалежно від того, сталася виняток чи ні.
Кидати Виняток створюється після виникнення проблеми. Це робота ключового слова Throw.

Синтаксис Try Catch у VB.Net

Інструкції Try Catch у VB.Net визначаються за допомогою наведеного нижче синтаксису:

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, коли вам потрібно перехопити різні типи винятків.

Приклад обробки винятків у VB.Net із Try Catch і Finally

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

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

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

Module Module1
    Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)
        Dim answer As Integer
        Try
            answer = n1 \ n2
        Catch ex As DivideByZeroException
            Console.WriteLine("Exception: {0}", ex)
        Finally
            Console.WriteLine("Answer is: {0}", answer)
        End Try
    End Sub
    Sub Main()
        divisionFunction(4, 0)
        Console.ReadKey()
    End Sub

End Module

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

Обробка винятків

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

Обробка винятків

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

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

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

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

Приклад визначеного користувачем винятку у VB.Net

Ось приклад визначеного користувачем винятку у VB.Net:

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

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

Module Module1

    Public Class HeightIsZeroException : Inherits ApplicationException
        Public Sub New(ByVal text As String)
            MyBase.New(text)
        End Sub
    End Class
    Public Class Height
        Dim height As Integer = 0
        Sub showHeight()
            If (height = 0) Then
                Throw (New HeightIsZeroException("Zero Height found"))
            Else
                Console.WriteLine("Height is: {0}", height)
            End If
        End Sub
    End Class
    Sub Main()
        Dim hght As Height = New Height()
        Try
            hght.showHeight()
        Catch ex As HeightIsZeroException
            Console.WriteLine("HeightIsZeroException: {0}", ex.Message)
        End Try
        Console.ReadKey()
    End Sub

End Module

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

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

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

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

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

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

Створення винятку у VB.Net

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

Приклад виняткової ситуації Throw у VB.Net

Нижче наведено приклад виключення виключення у VB.Net:

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

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

Module Module1

    Sub Main()
        Try
            Throw New ApplicationException("Throwing a custom exception")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("The Finally Block")
        End Try
        Console.ReadKey()
    End Sub


End Module

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

Викинути виняток

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

Викинути виняток

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

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

Підсумки

  • Виняток відноситься до проблеми, яка виникає під час виконання програми, спричиненої несподіваними обставинами.
  • Якщо ви підозрюєте, що якийсь код створить виняток, оточіть його блоком Try/Catch.
  • Блок Finally приходить після блоку Try/Catch і виконується незалежно від того, перехоплено виняток чи ні.
  • VB.Net дозволяє нам створювати спеціальні винятки.