Обработка исключений в VB.Net (методы try-catch)
⚡ Умное резюме
В VB.Net обработка исключений позволяет управлять ошибками времени выполнения, такими как деление на ноль, с помощью ключевых слов Try, Catch, Finally и Throw, чтобы программа могла корректно реагировать на проблемы, а не завершаться с ошибкой во время выполнения.
Что такое исключение в VB.Net?
An Исключение в VB.Net относится к проблеме, возникающей во время выполнения программы. Это вызвано неожиданным обстоятельством. Хорошим примером является ситуация, когда вы выполняете операцию деления, а затем делите на ноль (0). Будет создано исключение.
Что такое обработка исключений в VB.Net?
С исключениями в VB.Net, вы можете передать управление программой из одной части в другую. В VB.Net исключения обрабатываются с помощью следующих 4 ключевых слов:
| Ключевое слово | XNUMX |
|---|---|
| Попытка | Работа блока 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 и 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) Нажмите кнопку «Пуск» на панели инструментов, чтобы выполнить код. Вы должны получить следующий вывод:
Вот скриншот кода:
Объяснение Code:
- Создание модуля с именем Module1.
- Создание подпроцедуры с именем DivisionFunction с двумя целочисленными аргументами n1 и n2. ByVal — это ключевое слово VB.Net, указывающее, что значения аргументов будут передаваться по значению.
- Создание целочисленной переменной с именем ответ.
- Начало блока Try/Catch. Нам нужно окружить этим блоком код, который, как мы подозреваем, может вызвать исключение.
- Выполнение операции деления между значениями переменных n1 и n2. Результат операции деления присваивается переменной ответ. Этот код может вызвать исключение, например, когда мы делим число на ноль, поэтому мы окружили его блоками Try/Catch.
- Перехват исключения с именем DivideByZeroException и назначение сгенерированного сообщения об исключении ex.
- Печать текста на консоли для уведомления пользователя о типе/имени возникшего исключения.
- Блок «Наконец». Это будет выполнено независимо от того, поймано исключение или нет.
- Вывод на консоль текста, показывающего результат операции деления.
- Конец блока 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) Нажмите кнопку «Пуск» на верхней панели, чтобы выполнить код. Вы должны получить следующий вывод:
Вот скриншот кода:
Объяснение Code:
- Создание модуля с именем Module1.
- Создание класса исключений с именем HeightIsZeroException. Класс наследует весь класс ApplicationException.
- Создание подпроцедуры с именем New. Он будет принимать один строковый аргумент с именем text.
- Вызов конструктора базового класса и передача ему приведенного выше аргумента.
- Конец новой подпроцедуры.
- Конец класса 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.Exception, прямо или косвенно. Например:
Пример исключения исключения в 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) Нажмите кнопку «Пуск» на верхней панели, чтобы выполнить код. Вы должны получить следующее:
Вот скриншот кода:
Объяснение Code:
- Создание модуля с именем Module1.
- Запуск основной подпроцедуры.
- Начало кода обработки ошибок.
- Выброс объекта исключения. Этот код может генерировать исключение, поэтому мы окружили его блоком Try/Catch.
- Перехват исключения как объекта ex, если строка выдает исключение.
- Печать сообщения об исключении на консоли в случае его возникновения.
- Блок Final, который выполняется независимо от того, перехвачено исключение или нет.
- Сообщение, которое будет выводиться на консоль при выполнении блока Final.
- Конец кода обработки исключений.
- Приостановите консоль на некоторое время, ожидая, пока пользователь предпримет действие, чтобы закрыть ее.
- Конец основной подпроцедуры.
- Конец модуля.






