Обработка на изключения във 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 ни позволява да създаваме персонализирани изключения.