русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обработка исключительных ситуаций

В законе Мэрфи сказано: никогда не отлавливайте ошибки в программах, если не знаете, что с ними потом делать. Тема ошибок в программном обеспечении, к большому сожалению, остается актуальной по сей день. Корень проблемы лежит не столько в разгильдяйстве программистов, сколько в сложности разрабатываемых ими программ. Не существует способа автоматизированно проверить корректность той или иной программы за приемлемое время. В каждой мало-мальски сложной программе есть большое количество команд ветвления (операторов IF). Каждая команда ветвления дает два варианта дальнейших действий программы. Еще один IF добавляет следующую пару вариантов и т.д., причем варианты не суммируются, а перемножаются. Общее число способов выполнения программы оказывается равным 2n, где n – число операторов IF в программе. Для больших и сложных программ n составляет несколько десятков тысяч. Очевидно, проверить все возможные способы выполнения программы становится совершенно невозможным. Увы, надежность программного обеспечения на сегодняшний день заметно отстает от надежности "материальной" техники. Поэтому для проверки больших и сложных программ чаще всего применяют так называемое бета-тестирование. Бета-версией называется готовая программа, которую создатели передают в опытную эксплуатацию некоторой группе пользователей. За время опытной эксплуатации (от трех месяцев до года) обычно обнаруживается большинство ошибок, правда, за счет пользователей-экспериментаторов. Придумать другого пути тестирования пока не удается.

В принципе все ошибки в программировании делятся на несколько видов (Рис. 15.1). При возникновении любой ошибки в программе происходит так называемое прерывание.

Прерывание (interrupt)– событие, при наступлении которого процессор прекращает текущую деятельность и начинает выполнять программу – обработчик прерывания (Рис. 15.2).

Рис. 19.1. Классификация ошибок.

Рис. 19.2. Прерывание в программе.

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

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

VAR x,y:REAL;

BEGIN
x:=10.0;
y:=0.0;
x:=x/y

Разумеется, при ее выполнении должна возникнуть ошибка. Вот как это произойдет (Рис. 15.3): сначала возникнет прерывание, соответствующе ошибке "деление на ноль", затем обработчик прерывания примет решение о прекращении работы программы (ошибка фатальная) и выведет на экран сообщение типа "Runtime error 200 at 020D:0901", будет вызвана процедура выхода из программы и, наконец, работа программы позорно завершится.

Рис. 19.3. Обработка ошибки времени выполнения.

А откуда взялись шестнадцатеричные числа 020D:0901 в сообщении об ошибке? Эти числа представляют собой адрес команды, вызвавшей ошибку, внутри exe-файла. Поскольку exe-файл никаким образом невозможно перевести обратно в программу на Паскале, информация об адресе возникновения ошибки достаточно бесполезна – она никаким образом не связана с операторами исходной программы. Именно поэтому отлаживать программу надо в среде Паскаля/Delphi, обеспечивающей поиск ошибочного места в исходном тексте программы.

Просмотров: 574


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.