русс | укр

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

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

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

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


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

Разработка процедур, предотвращающих появление ошибок


Дата добавления: 2013-12-24; просмотров: 1305; Нарушение авторских прав


Процедуры обработки ошибок и отладка программ

 

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

 

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

- Обработка ошибок: в случае появления ошибки, перехватить ее, обработать и программно откликнуться на возникшую ошибку.

 

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

 

В данном разделе рассмотрим процесс создания приложения, в котором предотвращается появление ошибок, на простейшем примере:

 

- В диалоговом окне два поля (Числитель И Знаменатель) предусмотрены для ввода данных. Пользователь вводит в них по числу (рис. 12.1).

- По нажатию кнопки Счет, программа делит число, введенное в поле Числитель, на число, введенное в поле Знаменатель, и выводит полученный результат в поле Ответ.

 

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

 

Private Sub CommandButton1_Click()

Dim Числитель, Знаменатель, Результат As Double

Числитель = CDbl(TextBox1.Text)

Знаменатель = CDbl(TextBox2.Text)

Результат = Числитель / Делитель

TextBox3.Text = CStr(Результат)

End Sub

 

Несмотря на то что рассматриваемая ситуация очень простая, она уже таит в себе множество подводных камней. Например, если пользователь по невнимательности забудет ввести в поле Числитель или в поле Знаменатель число, при нажатии кнопки Счет происходит аварийное прерывание выполнения программы с малопонятным сообщением о несоответствии типов, отображаемом в диалоговом окне Microsoft Visual Basic (рис. 12.2).



Рис. 12.1. Диалоговое окно Деление

 

 

Рис. 12.2. диалоговое окно Microsoft Visual Basic с сообщением об ошибке

 

Данное сообщение об ошибке связано с одной из следующих двух инструкций в программе:

 

Числитель = CDbl(TextBox1.Text)

Знаменатель = CDbl(TextBox2.Text)

 

где аргументом функции CDbl должна быть строка, преобразуемая в число. Если в какое-то из полей, Числитель ИЛИ Знаменатель, ничего не введено, по умолчанию из этого поля будет считываться пустая строка. Но пустая строка не может быть преобразована в число, и поэтому из-за функции CDbl происходит ошибка. Ошибка о несоответствии типов возникнет также, если в одно из полей пользователь по неосторожности введет число с десятичной занятой, а установками системы предусматривается десятичная точка и наоборот.

Такие ошибки ввода легко избежать, если производить в программе предварительную проверку: преобразуются ли вводимые данные в числа? Эту предварительную проверку можно, например, сделать, как показано в следующей процедуре, в которой предусмотрены:

 

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

 

 

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

 

Поэтому процедура вызвала отображение диалогового

Рис. 12.3. Пример сообщения о некорректном вводе данных

окна деление с сообщением об ошибке в знаменателе и установила фокус на поле Знаменатель.

 

Private Sub CommandButton1_Click()

Dim Числитель, Знаменатель, Результат As Single

 

 

If IsNumeric(TextBox1.Text) = False Then

MsgBox “Ошибка в числителе”,

vbInformation, “деление”

TextBox1.SetFocus

Exit Sub

End If

 

 

If IsNumeric(TextBox2.Text) = False Then

MsgBox “Ошибка в знаменателе”,

vbInformation, “деление”

TextBox2.SetFocus

Exit Sub

End If

 

 

Числитель = CDbl(TextBox1.Text)

Знаменатель = CDbl(TextBox2.Text)

Результат = Числитель / Делитель

TextBox3.Text = CStr(Результат)

End Sub

 

Но это еще не все подводные камни, которые подстерегают неосторожного пользователя при вводе данных даже в этом простом примере. Если пользователь в поле Знаменатель введет 0, то также произойдет аварийная остановка выполнения программы с отображением в диалоговом окне Microsoft Visual Basic сообщения: деление на 0. для избежания подобной ошибки будем проверять не только, являются ли введенные в поле данные числом, но и что это не ноль. Например, добавим перед расчетным блоком в процедуре следующую дополнительную проверку:

 

If CDbl (TextBox2.Text) = 0 Then

MsgBox “Знаменатель не может быть нулем”,

vbInformation, “деление”

TextBox2.SetFocus

Exit Sub

 

 



<== предыдущая лекция | следующая лекция ==>
Время жизни переменной | Перехват и обработка ошибок


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


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

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

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


 


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

 
 

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

Генерация страницы за: 0.006 сек.