Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Предотвращение и обработка ошибок.




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

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

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

Обработку исключений (ошибок) берёт на себя автоматические добавляемый в выполняемую программу код, который обеспечивает, в том числе, вывод информационного сообщения.

При обработке исключительных ситуаций Delphi работает с объектами исключений. Так как Delphi - это объектно-ориентированный язык программирования, то и исключительная ситуация - тоже объект. Для работы с этим объектом в Delphi присутствуют специальные конструкции, которые мы рассмотрим далее.

Инструкции обработки исключения в общем виде выглядит так:

try

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

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

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

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

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

else

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

end;

где:

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

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

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

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

Таким образом, вы размещаете опасный участок когда после слова try,и, если при выполнении этого кода кода произойдёт исключительная ситуация, выполнение когда прекратится и начнут выполняться команды, расположенные после слова except. По умолчанию в среде Delphi 7 настройки отладчика установлены таким образом ,что все исключительные ситуации обрабатываются самим отладчиком, а до команд, расположенных после слова except,дело не доходит . В разделе except могут находится либо только операторы обработки исключений, которые начинаются со слова-приставки on,либо только произвольные операторы , не являющиеся операторами обработки исключений.

Классы исключений

Рассмотрим теперь классы исключений. Они необходимы для обработки конкретных исключительных ситуаций (например, как мы обрабатывали деление на ноль).Мы представляем классы исключений не в иерархии, а в алфавитном порядке :

Exception - базовый класс исключений. Все другие классы исключений являются прямыми или косвенными потомками данного класса;

EAbort - потомок класса Exception. Данный класс исключения не отображает диалоговое окно ошибки при возникновении исключения. Простейшим способом генерации данного исключения является вызов метода Abort ;

EAccessViolation - потомок класса EExtemai. Генерируется при неверной работе с памятью; а EBitsError - потомок класса Exception.Генерируется при ошибке доступа к массиву логических значений;

EComponentError - потомок класса Exception. Возникает при ошибке регистрации или переименования компонента;

EConvertError - потомок класса Exception. Генерируется при ошибке преобразования строк и объектов;

EDatabaseError - потомок класса Exception.Базовый класс для всех ошибок при работе с базами данных;

EDBEditError - потомок класса Exception.Возникает в слуае попытки помещения данных в поле,которое не являются совместимыми с заданной для этого поля маской;

EDivByZero - потомок класса EintError. Возникает при ошибке целочисленного деления на ноль. При делении на ноль чисел с плавающей запятой возникает другое исключение EZeroDivide;

EExternal - базовый класс исключений для всех ошибок;

возникающих при работе с памятью и генерируемых операционной системой;

    EExternalException - потомок класса Eexternal. Исключение с нераспознаваемым кодом;

    EHeapException - потомок класса Exception. Класс исключений, связанный с ошибками при работе с так называемыми "кучами" памяти;

    EintError - потомок класса EExternafl. Базовый класс исключений для всех ошибок, свзяанных с целочисленными математическими вычислениями;

    ElnOutError - потомок класса Exception. ошибка файлового ввода/вывода;

    ElntOverflow - потомок класса EintError. В случае превышения максимального значения целого числа;

    Einvalidcast - потомок класса Exception. Невеорное использование оператора as;

    EinvalidGraphic - потомок класса Exception. Нераспознаваемый графический файл;

    EinvalidOperation - потомок класса Exception. Неверное действие над компонентом;

    EinvalidPointer - потомок класса EHeapException. Неверная операция над указателем.

    EMathError - базовый класс исключений для всех ошибок, связанных с математическими операциями над числами с плавающей точкой;

    EmenuError - потом класса Exception. Ошибка при работе с меню;

    EOleCtrlerror - потомок класса Exception. Ошибка при присоединении элемента управление ActiveX;

    EOleError - потомок класса Exception. Ошибка при работе с автоматизацией OLE;

    EPrinterError - потомок класса Exception. Ошибка вывода на печатающее устройство;

    EpropertyError - потомок класса Exception. Ошибка при установке нового значения свойства компонента;

    ERangeError - потомок класса EintError. Значение целочисленной переменной превысило максимально возможное;

    ERegistryException - ПОТОМОК класса Exception. Ошибка При работе с реестром Windows;

EZeroDivide - потомк класса EMathError. Ошибка деления вещественного числа на ноль.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 381.

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