Опитайте ... Хванете ... Накрая, Хвърля, дефинирано от потребителя изключение във VB.Net

Какво е изключение?

Изключение се отнася до проблем, който възниква по време на изпълнение на програмата. Това се дължи на неочаквано обстоятелство. Добър пример е, когато извършвате операция на разделяне и след това разделяте на нула (0). Ще бъде повдигнато изключение.

В този урок за Visual Basic ще научите:

  • Какво е изключение?
  • Какво представлява обработката на изключения?
  • Синтаксис на Try / Catch
  • Пример за обработка на изключения
  • Дефинирани от потребителя изключения
  • Хвърляне на предмети

Какво представлява обработката на изключения?

С изключения можете да прехвърлите управлението на програма от една част в друга. Във VB.NET изключенията се обработват, като се използват следните 4 ключови думи:

Ключова дума Подробности
Опитвам Работата на блока Try е да идентифицира кодовия блок, за който ще бъде активирано конкретно изключение. Следва да бъде последван от блок за блокиране.
Хвани Уловът на изключението се извършва в този блок. Това е манипулатор на изключения, в който се обработва изключението.
Накрая Използвайте блока Final, за да стартирате набор от изрази, независимо дали е възникнало изключение или не.
Хвърли Изключване се появява след появата на проблем. Това е работата на ключовата дума 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 трябва да обгражда кода, който може да предизвика изключение. Този код е известен като защитен код. Можете да използвате множество изявления за хващане, когато трябва да уловите различни видове изключения.

Пример за обработка на изключения

С инструкциите Try / Catch можете да отделите обикновения си програмен код от системата за обработка на грешки. Нека да демонстрираме как да се справим с изключение, използвайки ключови думи Try, Catch и Final.

Стъпка 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 и присвояване на генерираното съобщение за изключение на бившия.
  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. Ще отнеме един низ аргумент, наречен текст.
  4. Извикване на конструктора на базовия клас и предаване на горния аргумент.
  5. Край на новата подпроцедура.
  6. Край на класа HeightIsZeroException.
  7. Създаване на клас на име Височина. Неговият модификатор за публичен достъп е Public, което означава, че ще бъде публично достъпен.
  8. Създаване на целочислена променлива с име Height и инициализиране на нейната стойност на 0.
  9. Създаване на подпроцедура с име showHeight ().
  10. Проверява се кога стойността на променливата Height е 0. Използвахме условието Ако ... Тогава.
  11. Да се ​​хвърли HeightIsZeroException, ако горното условие е вярно. Съобщението Zero Height Found ще се покаже, когато се изключи това изключение.
  12. Другата част, която се изпълнява, когато условието If не е вярно.
  13. Съобщение за отпечатване на конзолата, показващо Height, когато не е 0.
  14. Край на условието Ако.
  15. Край на подпроцедурата showHeight ().
  16. Край на класа Височина.
  17. Начало на основната подпроцедура.
  18. Създаване на обект с име Height като екземпляр на класа Height.
  19. Начало на блока за обработка на изключения.
  20. Извикване на подпроцедурата showHeight (), дефинирана в класа Height. Използвахме обект от този клас за достъп до този метод. Този ред може да доведе до изключение. Затова сме го заобиколили с код за обработка на изключения.
  21. Улавяне на изключението HeightIsZeroException като обект ex в случай, че се случи.
  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. Улавянето на изключение като обект ex, ако линията хвърля изключение.
  6. Отпечатване на съобщението за изключение на конзолата, в случай че се случи.
  7. Блокът „Най-накрая“, за да се изпълни дали дадено изключение е уловено или не.
  8. Съобщението за отпечатване на конзолата при изпълнение на блока Накрая.
  9. Край на кода за обработка на изключения.
  10. Поставете конзолата на пауза за известно време в очакване потребителят да предприеме действия, за да я затвори.
  11. Край на основната подпроцедура.
  12. Край на модула.

Обобщение

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

Интересни статии...