Попробуйте ... Поймать ... Наконец, бросает, пользовательское исключение в VB.Net

Содержание:

Anonim

Что такое исключение?

Исключение относится к проблеме, возникающей во время выполнения программы. Это вызвано неожиданным обстоятельством. Хороший пример - когда вы выполняете операцию деления, а затем делите на ноль (0). Возникнет исключение.

В этом руководстве по Visual Basic вы узнаете:

  • Что такое исключение?
  • Что такое обработка исключений?
  • Синтаксис Try / Catch
  • Пример обработки исключений
  • Пользовательские исключения
  • Бросание предметов

Что такое обработка исключений?

За исключением случаев, вы можете передавать управление программой от одной части к другой. В VB.NET исключения обрабатываются с помощью следующих 4 ключевых слов:

Ключевое слово Деталь
Пытаться Работа блока Try состоит в том, чтобы идентифицировать блок кода, для которого будет активировано конкретное исключение. За ним должны следовать блок (ы) захвата.
Ловить В этом блоке осуществляется перехват исключения. Это обработчик исключений, в котором обрабатывается исключение.
Ну наконец то Используйте блок finally, чтобы запустить набор операторов независимо от того, произошло ли исключение или нет.
Бросать Исключение создается после возникновения проблемы. Это работа ключевого слова 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 должен окружать код, который может вызвать исключение. Этот код известен как защищенный код. Вы можете использовать несколько операторов catch, когда вам нужно перехватить различные типы исключений.

Пример обработки исключений

С помощью операторов Try / Catch вы можете отделить обычный программный код от системы обработки ошибок. Давайте продемонстрируем, как обрабатывать исключение, используя ключевые слова Try, Catch и finally.

Шаг 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. Создание целочисленной переменной с именем answer.
  4. Начало блока Try / Catch. Нам нужно окружить код, который, как мы подозреваем, может вызвать исключение, этим блоком.
  5. Выполнение операции деления между значениями переменных n1 и n2. Результат операции деления присваивается вариативному ответу. Этот код может вызвать исключение, например, когда мы делим число на ноль, поэтому мы окружили его блоками Try / Catch.
  6. Перехват исключения с именем DivideByZeroException и присвоение сгенерированного сообщения об исключении объекту ex.
  7. Печать некоторого текста на консоли, чтобы уведомить пользователя о типе / имени возникшего исключения.
  8. Блок «Наконец». Это будет выполняться независимо от того, обнаружено исключение или нет.
  9. Печать текста на консоли, показывающего результат операции разделения.
  10. Конец блока Try, то есть конец кода обработки ошибок.
  11. Конец подпроцедуры DivisionFunction.
  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. Потребуется один строковый аргумент с именем text.
  4. Вызов конструктора базового класса и передача ему указанного выше аргумента.
  5. Конец новой подпроцедуры.
  6. Конец класса HeightIsZeroException.
  7. Создание класса с именем Высота. Его модификатор публичного доступа - Public, что означает, что он будет общедоступным.
  8. Создание целочисленной переменной с именем Высота и инициализация ее значения 0.
  9. Создание подпроцедуры с именем showHeight ().
  10. Проверка, когда значение переменной Height равно 0. Мы использовали условие If… Then.
  11. Выбрасывать исключение HeightIsZeroException, если вышеупомянутое условие истинно. Сообщение "Обнаружена нулевая высота" будет отображаться при возникновении этого исключения.
  12. Часть Else должна выполняться, когда условие If не выполняется.
  13. Сообщение для печати на консоли, показывающее высоту, если она не равна 0.
  14. Конец условия If.
  15. Конец подпроцедуры showHeight ().
  16. Конец класса Высота.
  17. Начало основной подпроцедуры.
  18. Создание объекта с именем «Высота» в качестве экземпляра класса «Высота».
  19. Начало блока обработки исключений.
  20. Вызов подпроцедуры showHeight (), определенной в классе Height. Мы использовали объект этого класса для доступа к этому методу. Эта строка может привести к исключению. Поэтому мы окружили его кодом обработки исключений.
  21. Перехват исключения HeightIsZeroException как объекта ex в случае его возникновения.
  22. Сообщение для печати на консоли при обнаружении исключения HeightIsZeroException.
  23. Конец блока обработки исключений.
  24. Приостановите окно консоли, ожидая, пока пользователь предпримет действия по его закрытию.
  25. Конец основной подпроцедуры.
  26. Конец модуля.

Бросание предметов

При обработке исключений вы можете выбросить объект. Однако объект должен быть производным от System. Exceptionclass, прямо или косвенно. Например:

Шаг 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. Блок finally для запуска вне зависимости от того, обнаружено ли исключение или нет.
  8. Сообщение для печати на консоли при выполнении блока finally.
  9. Конец кода обработки исключений.
  10. Приостановите консоль на некоторое время, ожидая, пока пользователь закроет ее.
  11. Конец основной подпроцедуры.
  12. Конец модуля.

Резюме

  • Исключение относится к проблеме, которая возникает во время выполнения программы из-за непредвиденных обстоятельств.
  • Если вы подозреваете, что какой-то код вызовет исключение, заключите его в блок Try / Catch.
  • Блок finally идет после блока Try / Catch и выполняется независимо от того, было обнаружено исключение или нет.
  • VB.NET позволяет нам создавать собственные исключения.