Средства отладки, структурированная обработка исключений.

Отладка– это устранение в программе причин, возникновения ее некорректного

выполнения, а также применение защиты от некорректных действий пользователя.

Программа может не быть корректной по следующим причинам:

Синтаксические ошибки (состоят в нарушении правил синтаксиса).

Логические ошибки.

Исключения (невозможно продолжение корректного выполнения программы).

О синтаксических ошибках среда сообщает на этапе ввода программного кода. Те части

кода, где обнаружены синтаксические ошибки, среда VB.NET подчеркивает синей

волнистой линией, сопровождая подсказкой существо ошибки. Это упрощает

обнаружение и исправление ошибок.

Исключения предотвратить сложнее. Они могут быть порождены не только ошибками

кода, но и неадекватными действиями пользователей. Вот лишь несколько примеров:

· Попытка открыть несуществующий файл.

· Попытка войти на сервер с неправильным именем или паролем.

· Попытка обратиться к папке, не имея на это права доступа.

· Выделение ресурса при недостаточном объеме доступной оперативной

памяти.

· Попытка деления числа на нуль.

· Выход аргумента функции за пределы области определения функции.

· Переполнение разрядной сетки.

· Ввод символьных данных вместо ожидаемых.

Самыми сложными для устранения среди всех возможных являются логические ошибки.

При их появлении код выполняется корректно, но результатов либо нет вообще, либо они

не соответствуют ожидаемым.

Для выявления причин логической ошибки и ее устранения требуется обширное

тестирование. VB предлагает некоторые эффективные инструменты для поиска

источников ошибок.

Среда VB.NET может находиться в одном из трех состояний:

1. Design (проектирование).

2. Running (выполнение).

3. Debugging (пауза).

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

период выполнения. Однако разработчик должен предусмотреть вероятность появления

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

Все это может послужить причиной возникновения исключений при выполнении

программы. При возникновении исключения VB выводит соответствующее сообщение и

приостанавливает выполнение программы.

Если приложение было запущено из среды разработки, то существует возможность

переключиться в режим паузы с помощью кнопки Debug, либо в режим проектирования с

помощью кнопки End. Среда разработки относительно "мягко" реагирует на исключения.

Если же исключение возникает после запуска выполняемого ЕХЕ-файла, то появляется

соответствующее сообщение. После этого можно продолжить выполнение программы

(кнопка Continue) либо прекратить ее выполнение (кнопка Quit) и перейти в режим

паузы невозможно.

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

Для этого в VB.NET имеется специальная программная модель обработки исключений,

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

преодолению препятствий для правильного продолжения выполнения программы. Для

обработки исключений используется блок кода Try … Catch … End Try.

Оператор Try (пробовать) следует поместить непосредственно перед той

подозрительной инструкцией, выполнение которой может привести к исключению. А

после этой инструкции помещается оператор Catch (поймать) вместе с теми

инструкциями, которые нужно выполнить, если исключение возникнет.

Синтаксис обработчика исключений выглядит так:

Try

Инструкции, которые могут вызвать исключение

Catch

Инструкции, которые выполняются, если исключение происходит

Finally

Дополнительные инструкции, выполняемые независимо от типа

исключения для освобождения ресурсов

End Try

Обработка исключения должна выполняться сразу после его обнаружения. Сначала

следует установить тип исключения. Для этого в VB существует объект Err, свойство

которого Err.Number содержит номер последнего исключения. Свойство Err.Description содержит краткое сообщение системы об этом исключении. Список

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

После определения типа исключения по его коду (свойство Number объекта Err),

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

Например, при ошибках обращения к диску может отображаться диалоговое окно для

принятия пользователем решения о прекращении операции или повторном выполнении.

Свойство Description объекта Err возвращает текст системного описания

исключения. Это можно использовать для вывода текста сообщения об исключении в

обработчике исключений, поскольку системный вывод сообщения об исключении при

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

Между инструкциями Try и End Try может находиться несколько блоков обработки

исключений, каждый из которых предназначен для обработки определенного типа

исключения, например:

Try

PictureBox.Image = _

System.Drawing.Bitmap.FromFile(“с:\Image\crach.bmp”)

Catch When Err.Number = 53 „Файл не найден

MsgBox(“Такого файла нет”)

Catch When Err.Number = 7 „Недостаточно памяти

MsgBox(“Слишком большой файл”)

Catch

MsgBox(“Не удалось загрузить файл” _

& Err.Description)

End Try

Здесь Catch When реагирует на появление конкретного исключения. Если при загрузке

рисунка в объект PictureBox.Image будет неправильно указано имя файла рисунка, то

это приведет к сообщению “Такого файла нет”. Если же при загрузке рисунка в

объект PictureBox.Image размер файла окажется больше свободной памяти, то это

приведет к сообщению “Слишком большой файл”. Последняя инструкция Catch

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

которое может возникнуть во время открытия файла будет выведено сообщение “Не

удалось загрузить файл”, сцепленное с системным сообщением об исключении,

содержащемся в Err.Description.

Наши рекомендации