Это не работает! Поиск и устранение ошибок времени выполнения
Обновлен: Ноябрь 2007
В этом разделе рассказывается о том, как отладить программу и исправить ошибки времени выполнения.
Как было показано ранее, ошибки времени выполнения возникают, когда программа пытается выполнить операцию, которую невозможно завершить. Когда возникает ошибка во время выполнения, программа останавливается, и отображается сообщение об ошибке. В этом случае необходимо обнаружить ошибку и устранить ее перед продолжением выполнения программы.
Поиск и устранение ошибок времени выполнения
Большинство ошибок времени выполнения происходит из-за ошибок в коде, например из-за того, что переменной перед ее использованием не было присвоено значение. После запуска программы при обнаружении ошибки программа будет остановлена, и в окне редактора кода отобразится диалоговое окно помощника по исключениям. В этом случае программа находится в режиме приостановки выполнения, в котором выполняется отладка.
Диалоговое окно помощника по исключениям содержит описание ошибки, а также советы по устранению неполадок, помогающие определить причину ее возникновения. Чтобы отобразить разделы справки и получить дополнительные сведения, щелкните советы по устранению неполадок.
Программа не может быть продолжена, пока не будут исправлены ошибки, поэтому необходимо проверить код, чтобы найти причину ошибки. Например, если предполагается, что ошибка возникла из-за недопустимого значения переменной, можно использовать IntelliSense в режиме приостановки выполнения, чтобы просмотреть значение этой переменной. Удерживайте указатель мыши над переменной в редакторе кода, чтобы просмотреть всплывающую подсказку, содержащую ее значение. Если значение не соответствует ожидаемому, просмотрите предшествующий код для поиска места, в котором устанавливается значение, исправьте его и продолжите работу.
Практическое задание
Проверка значения переменной
В меню Файл выберите команду Создать проект.
В области Шаблоны диалогового окна Создание проекта выберите команду Приложение Windows.
В окне Имя введите RunTimeErrors и нажмите кнопку ОК.
Откроется новый проект Windows Forms.
Дважды щелкните форму, чтобы открыть редактор кода.
В обработчик событий Form_Load добавьте следующий код.
Dim miles As Integer = 0 Dim hours As Integer = 0 Dim speed As Integer = 0
miles = 55 speed = miles / hours MsgBox(CStr(speed) & " miles per hour")
Нажмите клавишу F5 для запуска программы. Откроется диалоговое окно помощника по исключениям с сообщением "Необработанное исключение переполнения".
Пунктирная линия из диалогового окна к файлу кода показывает, какая строка кода вызвала ошибку.
Обратите внимание, что первый совет по устранению неполадок в помощнике по исключениям рекомендует убедиться, что не выполняется деление на ноль.
Переместите указатель мыши на переменную miles и удерживайте его в течение нескольких секунд. Отображается всплывающая подсказка с надписью "miles 55".
Теперь переместите указатель мыши на переменную hours – отображается всплывающая подсказка с надписью "hours 0".
Поскольку деление на ноль невозможно, и значение hours равно нулю, причина ошибки найдена – не обновляется значение hours.
Добавьте следующую строку кода над строкой miles = 55.
hours = 2
Щелкните желтую стрелку в левом поле кода и перетащите ее к строке hours = 2.
Это продолжит выполнение программы с этой строки, а не с той, которая содержит ошибку. Это необходимо для выполнения вновь добавленной строки кода и распознавания исправленных ошибок.
Нажмите клавишу F5, чтобы продолжить выполнение программы. Откроется диалоговое окно, отображающее "28 miles per hour".
Следующие действия
В этом разделе рассматривается поиск и исправление ошибок времени выполнения. В следующем разделе будет рассмотрен третий тип ошибок программирования – логические ошибки. Можно просмотреть дополнительные методы отладки в разделе Подробное рассмотрение. Что, если... Тестирование кода в окне интерпретации и затем перейти к разделу о логических ошибках.
Следующее занятие: Что? Это не было запланировано! Поиск логических ошибок
См. также
Задачи
Поиск и устранение ошибок компилятора