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

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

Ошибки, которые могут быть в программе, принято делить на три группы:

· синтаксические;

· ошибки времени выполнения;

· алгоритмические.

Синтаксические ошибки, их также называют ошибками времени компиляции (compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в тексте программы и выполнить повторную компиляцию.

Ошибки времени выполнения, в Delphi они называются исключениями (exception), тоже, как правило, легко устранимы. Они обычно проявляются уже при первых запусках программы и во время тестирования.

При возникновении ошибки в программе, запущенной из Delphi, среда разработки прерывает работу программы, о чем свидетельствует заключенное в скобки слово Stopped в заголовке главного окна Delphi, и на экране появляется диалоговое окно, которое содержит сообщение об ошибке и информацию о типе (классе) ошибки.

После возникновения ошибки программист может либо прервать выполнение программы, для этого надо из пункта главного меню Выполнить (Run) выбрать команду Остановить (Program Reset), либо продолжить ее выполнение, например, по шагам (для этого из пункта главного меню Выполнить (Run) надо выбрать команду Шаг вне (Step over)),наблюдая результат выполнения каждого оператора.

Если программа запущена из Windows, то при возникновении ошибки на экране также появляется сообщение об ошибке, но тип ошибки (исключения) в сообщении не указывается. После щелчка на кнопке ОК программа, в которой проявилась ошибка, продолжает (если сможет) работу.

С алгоритмическими ошибками дело обстоит иначе. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа ведет себя нормально, однако при анализе результата выясняется, что он неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм, вручную "прокручивать" его выполнение.

Как было сказано выше, ошибки времени выполнения программы называется исключением. Обработку исключений берет на себя автоматически добавляемый в выполняемую программу код, который обеспечивает, в том числе, вывод информационного сообщения. Вместе с тем Delphi дает возможность программе самой выполнить обработку исключения.

Формат оператора обработки исключения:

try

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

except// начало секции обработки исключений

on < Тип исключения1> do < Обработка1>;

on < Тип исключения2> do <Обработка2>;

on < Тип исключенияJ> do <ОбработкаJ>;

else

// здесь операторы обработки остальных исключений

end;

где:

try - зарезервированное ключевое слово, обозначающее, что далее следуют операторы, при выполнении которых возможно возникновение исключений, и что обработку этих исключений берет на себя сама программа;

except - зарезервированное ключевое слово, обозначающее начало секции обработки исключений. Операторы этой секции будут выполнены, если в программе возникнет ошибка;

on - зарезервированное ключевое слово, за которым следует тип исключения, обработку которого выполняет оператор, следующий за ключевым словом do;

else - зарезервированное ключевое слово, за которым следуют операторы, обеспечивающие обработку исключений, тип которых не указаны в секции except.

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

Таблица 1

Тип исключения Возникает
EZeroDivide При выполнении операции деления, если делитель равен нулю
EConvertError При выполнении преобразования, если преобразуемая величина не может быть приведена к требуемому виду. Наиболее часто возникает при преобразовании строки символов в число
EFileError При обращении к файлу. Наиболее частой причиной является отсутствие требуемого файла или, в случае использования сменного диска, отсутствие диска в накопителе

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: