Пошаговое руководство. Структурная обработка исключений (Visual Basic)

При обработке исключений наряду с оператором On Error, применяемым для неструктурной обработки исключений, в Visual Basic 2005 также предусмотрена возможность структурной обработки исключений, которая позволяет создавать и поддерживать программы с расширенной обработкой ошибок. При структурной обработке исключений блоки кода проверяют возникновение определенных ситуаций и реагируют на них соответствующим образом.

В этом пошаговом руководстве демонстрируется добавление в программу структурной обработки исключений. В частности, здесь демонстрируется использование блока Try...Catch...Finally для обработки исключений и выполнение фильтрации ошибок внутри блока Catch.

Примечание

В рамках одной процедуры нельзя совмещать структурную и неструктурную обработку исключений.

Примечание

На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.

Создание приложения

Следующее приложение представляет собой форму заказа клиента для компании, продающей плюшевых медведей. Пользовательский интерфейс состоит из следующих элементов управления.

  • Одно текстовое поле TextBox для имени клиента.

  • Два элемента управления ComboBox для выбора цвета и размера медведя.

  • Одна кнопка заказа Button.

  • Три подписи, описывающие назначение каждого элемента управления для пользователя.

  • Когда пользователь вводит требуемую информацию и нажимает кнопку заказа, в приложении отображаются сведения о заказе.

Чтобы создать приложение

  1. В меню Файл выберите пункт Новый проект. Откроется диалоговое окно Создание проекта.

  2. В окне Типы проектов выберите Visual Basic и Windows, если они еще не выбраны, а затем выберите Приложение Windows в окне Шаблоны.

  3. В окне Свойства в поле Имя введите TeddyBearProject и нажмите кнопку ОК. Проект будет добавлен в обозреватель решений, и откроется конструктор Windows Forms.

  4. Добавьте в форму элементы управления и задайте их свойства, как описано ниже.

    Control

    Свойства

    Значения свойств

    Label

    Name

    Text

    customerLabel

    Форма заказа медведя

    TextBox

    Name

    Text

    customerName

    Имя клиента

    Label

    Name

    Text

    bearColorLabel

    Доступные цвета

    ComboBox

    Name

    Items

    Text

    bearColor

    Черный, Коричневый, Пятнистый

    Цвет медведя

    Label

    Name

    Text

    bearSizeLabel

    Доступные размеры

    ComboBox

    Name

    Items

    Text

    bearSize

    Небольшой, Обычный, Крупный

    Размер

    Кнопка

    Name

    Text

    order

    Порядок

Добавление функциональности

После добавления и задания элементов управления и их свойств необходимо подключить к ним код, чтобы сделать их работоспособными. Следующий код обрабатывает событие Click кнопки Order и выводит сообщение для покупателя.

Чтобы добавить функции для формы и элементов управления

  • Добавьте следующий код в событие Click кнопки Order.

    Dim bearOrder As String
    bearOrder =
      String.Format("You have ordered a {0} {1} bear.",
      bearSize.SelectedItem, bearColor.SelectedItem)
    MsgBox(bearOrder)
    

Теперь в приложение можно добавить код для структурированной обработки исключений.

Добавление блока Try...Catch

Чтобы убедиться в том, что покупатель указал цвет медведя, добавьте оператор Try...Catch. Необходимо учитывать следующее.

  • Оператор Catch без идентификатора перехватывает все исключения.

  • Оператор Catch с оператором When перехватывают исключения только в том случае, когда выражение равняется True; тип выражения должен неявно преобразовываться в тип Boolean.

Чтобы добавить простой блок Try...Catch

  • Добавьте следующий код к событию Click кнопки Order после раздела, в котором проверяется значения размера и цвета, т.е. после строки String.Format ("You have ordered a {0} {1} bear.", BearSize.SelectedItem, BearColor.SelectedItem). Этот код создает исключение при обнаружении неправильного значения цвета. При добавлении операторов Try имейте в виду, что редактор автоматически добавляет оператор End Try в конце оператора.

    Try
        If bearColor.SelectedIndex < 0 OrElse
           bearColor.SelectedIndex > 2 Then
             Throw New System.Exception()
        End If
        ' The Catch statement handles errors caused by a lack of bear color.
    Catch ex As Exception When bearColor.SelectedIndex < 0
        bearOrder = String.Format("You must select a bear color!")
    Finally
        Beep() ' Beep at the end.
    End Try
    

Чтобы добавить дополнительный оператор Catch

  1. Добавьте в свойство bearColor элемента управления ComboBox новый элемент "Фиолетовый".

  2. Добавьте следующий код под строкой bearOrder = String.Format("You must select a bear color!").

    Catch ex As Exception When bearColor.SelectedIndex = 3
        bearOrder = String.Format("There are no bears of that color.")
    

В код можно добавить любое количество операторов Catch.

Проверка

Теперь можно протестировать приложение, чтобы проверить его работоспособность.

Чтобы построить и запустить приложение

  1. В меню Построить выберите пункт TeddyBearProject.

  2. Нажмите клавишу F5 для запуска приложения. Появится главная форма.

Чтобы протестировать приложение

  1. Введите имя в текстовое поле Имя клиента, затем выберите цвет и размер медведя в полях со списком Доступные цвета и Доступные размеры.

  2. Нажмите кнопку Заказать. Если на предыдущем шаге выбран один из цветов Черный, Коричневый или Пятнистый, появится сообщение, содержащее сведения о заказанном медведе.

    Если цвет не указан, появится сообщение, требующее указать цвет.

  3. Нажмите кнопку ОК, чтобы закрыть сообщение.

  4. В текстовом поле Доступные цвета выберите Фиолетовый, а затем нажмите кнопку Заказать. Появится сообщение, что фиолетовых медведей в наличии нет.

См. также

Ссылки

Оператор On Error (Visual Basic)

Оператор Try... Catch... Finally (Visual Basic)

Оператор Throw (Visual Basic)

Основные понятия

Обзор структурной обработки исключений в Visual Basic

Другие ресурсы

Задачи обработки исключений (Visual Basic)