Обработка на изключения във VB.Net: Примери за обработка на опит и улавяне

Какво е изключение във 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 трябва да обгражда кода, който може да предизвика изключение. Този код е известен като защитен код. Можете да използвате множество оператори за улавяне, когато трябва да прихванете различни видове изключения.

Пример за обработка на изключения във 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) Щракнете върху бутона Старт от лентата с инструменти, за да изпълните кода. Трябва да получите следния резултат:

Изключение Handling

Ето екранна снимка на кода:

Изключение Handling

Обяснение на кода:

  1. Създаване на модул с име Module1.
  2. Създаване на подпроцедура с име divisionFunction с два целочислени аргумента n1 и n2. ByVal е ключова дума на VB.Net, заявяваща, че стойностите на аргументите ще бъдат предавани по стойност.
  3. Създаване на целочислена променлива с име отговор.
  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. Ще отнеме един аргумент от низ, наречен текст.
  4. Извикване на конструктора на базовия клас и предаване към него на горния аргумент.
  5. Край на новата подпроцедура.
  6. Край на класа HeightIsZeroException.
  7. Създаване на клас с име Height. Неговият модификатор за публичен достъп е Public, което означава, че ще бъде публично достъпен.
  8. Създаване на целочислена променлива с име Height и инициализиране на нейната стойност на 0.
  9. Създаване на подпроцедура с име showHeight().
  10. Проверка кога стойността на променливата Height е 0. Използвахме условието If…Then.
  11. За да хвърлите HeightIsZeroException, ако горното условие е вярно. Съобщението Намерена е нулева височина ще се покаже, когато бъде хвърлено това изключение.
  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. Exceptionclass, пряко или косвено. Например:

Пример за хвърляне на изключение във 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. Край на модула.

Oбобщение

  • Изключение се отнася до проблем, който възниква по време на изпълнение на програмата, предизвикан от неочаквано обстоятелство.
  • Ако подозирате, че някакъв код ще генерира изключение, оградете го с блок Try/Catch.
  • Блокът Finally идва след блока Try/Catch и се изпълнява независимо дали изключение е уловено или не.
  • VB.Net ни позволява да създаваме персонализирани изключения.