Обработка исключений в VB.Net: примеры обработки исключений Try & Catch

Что такое исключение в VB.Net?

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

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

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

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

Пример обработки исключений в VB.Net с помощью Try Catch и наконец

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

Шаг 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) Нажмите кнопку «Пуск» на панели инструментов, чтобы выполнить код. Вы должны получить следующееwing вывод:

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

Вот скриншот кода:

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

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

  1. Создание модуля с именем Module1.
  2. Создание подпроцедуры с именем DivisionFunction с двумя целочисленными аргументами n1 и n2. ByVal — это ключевое слово VB.Net, указывающее, что значения аргументов будут передаваться по значению.
  3. Создание целочисленной переменной с именем ответ.
  4. Начало блока Try/Catch. Нам нужно окружить этим блоком код, который, как мы подозреваем, может вызвать исключение.
  5. Выполнение операции деления между значениями переменных n1 и n2. Результат операции деления присваивается переменной ответ. Этот код может вызвать исключение, например, когда мы делим число на ноль, поэтому мы окружили его блоками Try/Catch.
  6. Перехват исключения с именем DivideByZeroException и назначение сгенерированного сообщения об исключении ex.
  7. Печать текста на консоли для уведомления пользователя о типе/имени возникшего исключения.
  8. Блок «Наконец». Это будет выполнено независимо от того, поймано исключение или нет.
  9. Печать текста на консолиwing результат операции деления.
  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) Используйте фоллоwing код:

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) Нажмите кнопку «Пуск» на верхней панели, чтобы выполнить код. Вы должны получить следующееwing вывод:

Пользовательское исключение

Вот скриншот кода:

Пользовательское исключение

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

  1. Создание модуля с именем Module1.
  2. Создание класса исключений с именем HeightIsZeroException. Класс наследует весь класс ApplicationException.
  3. Создание подпроцедуры с именем New. Он будет принимать один строковый аргумент с именем text.
  4. Вызов конструктора базового класса и передача ему приведенного выше аргумента.
  5. Конец новой подпроцедуры.
  6. Конец класса HeightIsZeroException.
  7. Создание класса с именем Height. Его модификатор публичного доступа — Public, что означает, что он будет общедоступен.
  8. Создание целочисленной переменной с именем Height и инициализация ее значения 0.
  9. Создание подпроцедуры с именем showHeight().
  10. Проверка того, когда значение переменной Height равно 0. Мы использовали условие If…Then.
  11. Выдать исключение HeightIsZeroException, если вышеуказанное условие истинно. Сообщение «Нулевая высота найдена» будет отображаться при возникновении этого исключения.
  12. Часть Else, которая будет выполнена, если условие If неверно.
  13. Сообщение для печати на консоли шоwing Высота, когда она не равна 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. Класс исключений, прямо или косвенно. Например:

Пример исключения исключения в VB.Net

Ниже приведен пример исключения исключения в VB.Net:

Шаг 1) Создайте новое консольное приложение.

Шаг 2) Используйте фоллоwing код:

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) Нажмите кнопку «Пуск» на верхней панели, чтобы выполнить код. Вы должны получить следующееwing:

Выбросить исключение

Вот скриншот кода:

Выбросить исключение

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

  1. Создание модуля с именем Module1.
  2. Запуск основной подпроцедуры.
  3. Начало кода обработки ошибок.
  4. беспересадочныйwing объект исключения. Этот код может генерировать исключение, поэтому мы окружили его блоком Try/Catch.
  5. Перехват исключения как объекта ex, если строка выдает исключение.
  6. Печать сообщения об исключении на консоли в случае его возникновения.
  7. Блок Final, который выполняется независимо от того, перехвачено исключение или нет.
  8. Сообщение, которое будет выводиться на консоль при выполнении блока Final.
  9. Конец кода обработки исключений.
  10. Приостановите консоль на некоторое время, ожидая, пока пользователь предпримет действие, чтобы закрыть ее.
  11. Конец основной подпроцедуры.
  12. Конец модуля.

Итоги

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