Обработка на изключения във 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) Щракнете върху бутона Старт от лентата с инструменти, за да изпълните кода. Трябва да получите следния резултат:
Ето екранна снимка на кода:
Обяснение на кода:
- Създаване на модул с име Module1.
- Създаване на подпроцедура с име divisionFunction с два целочислени аргумента n1 и n2. ByVal е ключова дума на VB.Net, заявяваща, че стойностите на аргументите ще бъдат предавани по стойност.
- Създаване на целочислена променлива с име отговор.
- Начало на блока Try/Catch. Трябва да обградим кода, за който подозираме, че може да предизвика изключение с този блок.
- Извършване на операция деление между стойностите на променливи n1 и n2. Резултатът от операцията деление се присвоява на променливата отговор. Този код може да предизвика изключение, например, когато разделим число на нула, следователно сме го заобиколили с блоковете Try/Catch.
- Улавяне на изключението с име DivideByZeroException и присвояване на генерираното съобщение за изключение на ex.
- Отпечатване на някакъв текст на конзолата за уведомяване на потребителя за типа/името на изключение, което е било повдигнато.
- Блокът Finally. Това ще се изпълни независимо дали е уловено изключение или не.
- Отпечатване на текст на конзолата, показващ резултата от операцията за разделяне.
- Край на блока Try, тоест край на кода за обработка на грешки.
- Край на подпроцедурата divisionFunction.
- Начало на основната подпроцедура.
- Извикване/извикване на подпроцедурата divisionFunction. Тук се предават стойностите на двата целочислени аргумента. Стойността на n1=4 и n2=0. Това означава, че операцията деление ще бъде 4\0, тоест n1\n2.
- Поставяне на пауза на прозореца на конзолата в очакване потребителят да предприеме действие, за да го затвори.
- Край на основната подпроцедура.
- Край на модула.
Дефинирани от потребителя изключения във 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) Щракнете върху бутона Старт от горната лента, за да изпълните кода. Трябва да получите следния резултат:
Ето екранна снимка на кода:
Обяснение на кода:
- Създаване на модул с име Module1.
- Създаване на клас изключение с име HeightIsZeroException. Класът наследява целия клас ApplicationException.
- Създаване на подпроцедура с име New. Ще отнеме един аргумент от низ, наречен текст.
- Извикване на конструктора на базовия клас и предаване към него на горния аргумент.
- Край на новата подпроцедура.
- Край на класа HeightIsZeroException.
- Създаване на клас с име Height. Неговият модификатор за публичен достъп е Public, което означава, че ще бъде публично достъпен.
- Създаване на целочислена променлива с име Height и инициализиране на нейната стойност на 0.
- Създаване на подпроцедура с име showHeight().
- Проверка кога стойността на променливата Height е 0. Използвахме условието If…Then.
- За да хвърлите HeightIsZeroException, ако горното условие е вярно. Съобщението Намерена е нулева височина ще се покаже, когато бъде хвърлено това изключение.
- Частта Else, която да се изпълни, когато условието If не е вярно.
- Съобщение за отпечатване на конзолата, показващо височината, когато не е 0.
- Край на условието If.
- Край на подпроцедурата showHeight().
- Край на класа Вис.
- Начало на основната подпроцедура.
- Създаване на обект с име Height като екземпляр на класа Height.
- Начало на блока за обработка на изключения.
- Извикване на подпроцедурата showHeight(), дефинирана в класа Height. Използвахме обект от този клас за достъп до този метод. Този ред може да доведе до изключение. Затова сме го заобиколили с код за обработка на изключения.
- Улавяне на изключението HeightIsZeroException като обект ex в случай, че се случи.
- Съобщението за отпечатване на конзолата, когато HeightIsZeroException бъде уловено.
- Край на блока за обработка на изключение.
- Поставете на пауза прозореца на конзолата, изчаквайки потребител да предприеме действие, за да го затвори.
- Край на основната подпроцедура.
- Край на модула.
Хвърлете изключение във 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) Щракнете върху бутона Старт от горната лента, за да изпълните кода. Трябва да получите следното:
Ето екранна снимка на кода:
Обяснение на кода:
- Създаване на модул с име Module1.
- Начало на основната подпроцедура.
- Начало на кода за обработка на грешки.
- Хвърляне на обект за изключение. Този код може да генерира изключение, затова сме го заобиколили с блок Try/Catch.
- Прихващане на изключение като обект ex, ако линията хвърля изключение.
- Отпечатване на съобщението за изключение на конзолата, в случай че се случи.
- Блокът Finally за изпълнение, независимо дали е уловено изключение или не.
- Съобщението за отпечатване на конзолата, когато се изпълни блокът Finally.
- Край на кода за обработка на изключение.
- Поставете конзолата на пауза за известно време в очакване потребителят да предприеме действие, за да я затвори.
- Край на основната подпроцедура.
- Край на модула.
Oбобщение
- Изключение се отнася до проблем, който възниква по време на изпълнение на програмата, предизвикан от неочаквано обстоятелство.
- Ако подозирате, че някакъв код ще генерира изключение, оградете го с блок Try/Catch.
- Блокът Finally идва след блока Try/Catch и се изпълнява независимо дали изключение е уловено или не.
- VB.Net ни позволява да създаваме персонализирани изключения.






