Выбор между структурной и неструктурной обработкой исключений

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

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

Примечания

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

  • В случае обновления приложения, написанного в более ранней версии Visual Basic.

  • При разработке предварительной или черновой версии приложения, когда не столь важно, чтобы программа корректно завершала работу.

  • Заранее известно, что послужит причиной исключения.

  • Если установлены жесткие сроки, необходимо избрать кратчайший путь и быть готовым пожертвовать гибкостью для увеличения скорости.

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

  • Необходимо использовать оператор Resume Next, который не поддерживается при структурной обработке исключений.

Структурная и неструктурная обработка исключений не могут сочетаться в одной функции. Если используется оператор On Error, нельзя использовать оператор Try...Catch в той же функции.

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

  • пользователь будет вводить цифры, а не буквы;

  • номер будет иметь определенный формат;

  • пользователь не будет вводить пустую строку;

  • у пользователя только один телефонный номер.

Данные, введенные пользователем, могут нарушить любое или даже все из этих предположений. Надежный код требует адекватной обработки исключений, которая позволяет приложению аккуратно восстанавливаться после подобных нарушений.

Если невозможно гарантировать, что метод не будет генерировать исключение ни при каких обстоятельствах, следует обеспечить информативную обработку исключений. Обработка исключений должна быть осмысленной. Помимо сообщения факта о сбое в программе, сообщения, являющиеся результатом обработки исключений, должны указывать, почему и где произошел сбой. Неинформативные сообщения типа "Произошла ошибка" только нервируют пользователя.

См. также

Задачи

Устранение неполадок при обработке исключений

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

Типы ошибок

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

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