Поделиться через


Практическое руководство. Сохранение элемента управления при ошибке

Обновлен: Ноябрь 2007

Конструкцию Оператор Try... Catch... Finally (Visual Basic) можно использовать для структурированной обработки исключений. Это позволит выполнить конкретный блок операторов при появлении указанного исключения во время выполнения кода. Когда это происходит, говорят, что код генерирует исключение, которое можно перехватить с помощью подходящего оператора Catch.

Выполнение набора операторов, если кодом вызывается исключение

  • Используйте конструкцию Try...Catch...Finally, чтобы заключить в нее код, который может вызывать исключение. Затем укажите код, который будет выполняться при появлении исключения, и введите (при необходимости) набор операторов, которые нужно выполнить до того, как управление выйдет за пределы конструкции Try... Catch...Finally.

    В приведенном ниже примере предпринимается попытка вычисления даты и времени в точности через 100 лет после значения, указанного в переменной givenDate объекта Object.

    Dim givenDate As Object
    Dim nextCentury As Date
    Try
        nextCentury = Microsoft.VisualBasic.DateAdd("yyyy", 100, givenDate)
        Catch thisExcep As System.ArgumentOutOfRangeException
        ' The resulting date/time is later than December 31, 9999.
        Catch thisExcep As System.ArgumentException
        ' At least one argument has an invalid value.
        Catch thisExcep As System.InvalidCastException
        ' The value in givenDate cannot be interpreted as a date/time.
        Catch
        ' An unforeseen exception has occurred.
        Finally
        ' This block is always run before leaving the Try structure.
    End Try
    

    В первых трех блоках Catch обрабатывается исключение, которое можно ожидать из Функция DateAdd (Visual Basic). В последнем блоке Catch можно обработать любое непредвиденное исключение.

    Что бы ни случилось, блок Finally всегда выполняется в последнюю очередь, прежде чем управление выйдет за пределы конструкции Try... Catch...Finally. Если в блоке Try или Catch создаются или открываются ресурсы, такие как объекты или подключения к базе данных, то можно использовать блок Finally, чтобы закрыть их и удалить, если это необходимо.

    Если переменная исключения thisExcep отсутствует в операторе объявления, таком как Dim, объявлением будет служить оператор Catch с предложением As.

См. также

Задачи

Практическое руководство. Передача управления за пределы структуры управления

Практическое руководство. Запуск инструкции в зависимости от одного или более условий

Практическое руководство. Проверка нескольких значений выражения

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

Структуры решений

Циклические структуры

Другие структуры управления

Вложенные структуры управления

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

Управление ходом выполнения в Visual Basic