![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
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; Прочитано: 232 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!