Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Конструктор Параметры




Create(const Msg: string); Параметр – строка, которая будет

отображаться в диалоговом окне, информирующем о возник-

новении исключительной ситуации

CreateRes (ResStringRec: PresStringRec); Параметр – строка сообщения, которая загру-

overload; жается из ресурсов программы

CreateFmt (const Msg: string; Массив Args содержит значения, на основе

const Args: array of const); которых с использованием строки форматиро-

CreateResFmt(ResStringRec: PresStringRec; вания Msg или ResStringRec формируется

const Args: array of const); overload; результирующее сообщение


CreateHelp (const Msg: string; Идентификатор раздела справки AHelpContext

AhelpContext: Integer); указывает, где пользователь сможет подробнее

узнать о возникшей ошибке. Справочная сис-

тема для текущей программы должна быть

создана заранее

СТАНДАРТНЫЕ КЛАССЫ ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ

В библиотеках системы Delphi имеется немало классов, ответственных за обработку различных исключительных ситуаций. В отличие от остальных типов языка, названия которых принято записывать, начиная с буквы T, имена этих классов начинаются с буквы Е (Exception). Основные классы исключительных ситуаций приведены в таблице 2.

Таблица 2

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


Имя класса Когда возникает


EAbort Данный класс предназначен для формирования и обработки «невидимых»

для пользователя ошибок и используется разработчиками для управления

ходом выполнения программы. Диалоговое окно с сообщением об ошибке

не показывается

EAbstractError Попытка выполнения абстрактного метода

EAccessViolation Обращение к недоступной области памяти, например при выходе индекса

границы массива

EAssertionFailed Значение выражения в процедуре Assert равно False

EControlC Нажата комбинация клавиш CTRL+C в консольном приложении

EConvertError Попытка неверного преобразования типов, например при вызове StrToInt

EDivByZero Деление на ноль

EExternal Неверное функционирование системы Windows

EEternalExeption Невозможность распознать исключительную ситуацию средствами Delphi

EHeapException Неверное динамическое распределение памяти или некорректная работа

с указателями

EFileSteamError Ошибка ввода (вывода) при использовании файла, название которого

указано в параметре FileName данного класса

EInOutError Ошибка файлового ввода(вывода)

EIntError Базовый класс, на основе которого созданы классы исключительных ситу-

аций при работе с целыми числами

EIntOverflow Слишком большой результат при операции с целыми числами

EIntCastError Неверное приведение типа объекта с помощью операции as во время

обращения к интерфейсу

EInvalidCast Неверное приведение типа с помощью операции as

EInvalidOp Неверная операция над числами с плавающей запятой

EInvalidPointer Неверная операция при работе с указателями

Имя класса Когда возникает

EMathError Базовый класс, на основе которого созданы классы исключительных

ситуаций при работе с числами с плавающей запятой

EOutOfMemory Нехватка памяти

EOverflow Переполнение при выполнении операции над числами с плавающей запятой

EPackageError Некорректная работа с пакетами. Возникает только на этапе проектирования

В среде Delphi

EPrivilege Попытка выполнить неразрешенную привилегированную инструкцию

процессора

EPropReadOnly Попытка занесения значения в св-во объекта, доступное «только для чтения»

ERangeError Значение выражения целого типа выходит за допустимый для этого типа

диапазон

EStackOverflow Нехватка памяти в стеке. Возникает, когда используется слишком объемные

локальные переменные и ли когда слишком длинна последовательность

вызовов вложенных подпрограмм

EUnderflow Результатом выражения над числами с плавающей запятой является число,

которое слишком мало для его представления в программе

EVariantError Некорректное использование переменных типа Variant например при попытке

неверного приведения типов

EWin32Error Ошибка 32-разрядной версии Windows

EZeroDivide Деление на ноль


Иногда исключительные ситуации используют, чтобы изменить порядок выполнения операторов программы. Если, например, обнаружена ошибка при работе какого-либо метода, желательно не просто завершить его работу, а передать управление в часть программы, ответственную за исключительные ситуации. Для этого обычно применяют процедуру Abort, генерирующую исключительную ситуацию класса EAbort.

КОНТРОЛЬ НАД ИСКЛЮЧИТЕЛЬНЫМИ СИТУАЦИЯМИ

Try

операторы;

Finaly

завершающие действия

End;

Часть программы, которая находится между служебными словами try, finaly называется защищенным кодом и является реализацией технологии защищенного программирования.

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

Try

операторы;

Except

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

else оператор;

End;

Ключевое слово try обозначает начало блока контроля выполнения операторов, следующих до ключевого слова except. В случае возникновения исключительной ситуации происходит обращение к списку классов, перечисленных перед завершающим ключевым словом end. При этом выполняется действие, указанное для соответствующего класса, а затем управление передается первому оператору, следующему за завершающим словом end. Операторы, оставшиеся в части try, пропускаются. Если исключительные ситуации не встретились, то пропускаются все действия, следующие за ключевым словом except.

Если возникшая ситуация не относится ни к одному из явно обрабатываемых классов, то выполняется команда, указанная после ключевого слова else. Часть else в блоке try указывать не обязательно.

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

on название класса do операторы;

Можно создать единый обработчик для любой исключительной ситуации. Тогда блок try записывается так:

Try

операторы;

Except

действия;

End;





Дата публикования: 2015-02-03; Прочитано: 218 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.016 с)...