КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Свойства и конструкторы исключений
Иерархия классов исключений Исключения Обработка исключительных ситуаций Вопросы для самопроверки Вопросы для самопроверки и контроля События Событие ‑ это специальное свойство ‑ указатель функции типа TNotifyEvent с одним параметром (обычно Self - данный объект) типа TObject. Подобный тип используется для всех событий с одним параметром Sender:TObject (например, OnClick -щелчок мышки). Пример ввода события в класс: объявление поля и метода работы: Private FMyEvent:TNotifyEvent; //объявление поля для свойства Published Property MyEvent:TNotifyEvent Read FMyEvent Write FMyEvent; Для вызова обработчика нужно указать в нашем примере: If Assigned(FmyEvent) Then //проверка наличия обработчика пользователя OnMyEvent(Self) //вызов обработчика MyEvent Если в обработчик передаются другие параметры, кроме Self, то объявляется собственный тип: Type TMyEvent=Procedure(Sender:TObject,Var DEvent: Boolean) Of Object; T=Class(TObject); Private FMyEvent:TmyEvent; Published Property MyEvent:TMyEvent Read FMyEvent Write FMyEvent; End; 1. Каковы свойства объектно‑ориентированного программирования? 2. Назначение метода‑конструктора объекта. Контрольные вопросы 1. Каково назначение метода‑деструктора объекта? 2. Допускает ли Delphi традиционное и объектно‑ориентированное программирование? 3. Заменяет ли одноименный статический метод в потомке родительский?
При работе программы могут возникать исключительные ситуации, связанные с различными ошибками в программе (деление на нуль, переполнения,...) или сбоями в работе устройств (ошибки при чтении или записи в файл,...). В таких ситуациях генерируется временный специальный объект - исключение, который определяет и детализирует возникшую исключительную ситуацию. Если исключение в программе не перехватывается, то метод Tapplication.HandleException выдает в окне сообщения краткую информацию, и обычно программа заканчивает свою работу аварийно (системный обработчик). Исключения сгруппированы в иерархию классов различных уровней. Исключение родительского класса перехватывает исключения потомков (непосредственно нижестоящих классов). Базовым классом для всех исключений является Exception. Приведем список имен классов исключений, выделяя отступами подчиненность классов. Eabort- искусственное исключение, вызываемое процедурой Abort. EabstractError ‑ попытка вызвать абстрактный метод. EAccessViolation ‑ ошибочный доступ к памяти. EArrayError ‑ ошибка в индексе элемента массива. EAssertionFailed ‑ ложное условие, проверяемое процедурой Assert (п.1.7.9) EBitsError ‑ ошибка доступа к массиву логических величин TBits. ECacheError ‑ ошибка построения кэша куба решений. EComponentError ‑ ошибка в регистрации или переименовании компонент. EControlC ‑ нажатие пользователем клавиш Ctrl+C. EConvertError ‑ ошибка преобразований строк (StrToInt,...) или объектов. EDatabaseError ‑ ошибка при работе с базами данных. EDBClient ‑ ошибка в наборе данных. В ErrorCode ‑ код ошибки. EReconcileError ‑ ошибка в обновлении данных компонента TClientDataset (п. 4.10.1). EBDEngineError ‑ ошибка в BDE. Свойство Errors ‑ сообщение об ошибке. ENoResultError ‑ открытие запроса без оператора Select. EUpdateError ‑ ошибка при обновлении в TProvider. EDateTimeError ‑ ошибка ввода даты или времени при использовании компонента TdateTimePicker (п. 2.3.2.7). EDBEditError ‑ несоответствие данных с маской ввода. EDimensionMapError ‑ ошибка в формате данных в кубе решений. EDimIndexError ‑ ошибка в индексе в размерности в кубе решений. EExternalException ‑ неизвестный код исключения. EInOutError ‑ ошибка ввода ‑ вывода из файла. В Errorcode ‑ код ошибки. EIntError ‑ ошибки с целочисленными операциями (п.1.3.5.2). EDivByZero ‑ целочисленное деление на нуль. ERangeError ‑ значение или индекс вне допустимого диапазона (п.1.3.5.2) EIntOverflow ‑ переполнение при операции с целыми числами. EIntfCastError ‑ ошибочное преобразование типов As к интерфейсу. EInvalidCast ‑ ошибка преобразования типа объекта операцией As. EInvalidGraphic ‑ нераспознанный графический файл. EInvalidGraphicOperation ‑ ошибочная графическая операция. EInvalidGridOperation ‑ ошибочная операция с таблицей. EInvalidOperation ‑ ошибочная операция с компонентом. EInvalidPointer ‑ ошибочная операция с указателем. EListError ‑ ошибка при работе с объектом типа списка Tlist,TstringList. ELowCapacityError ‑ нехватка памяти для куба решений. EMathError ‑ ошибки с операциями над вещественными числами. EInvalidArgument ‑ запрещенное значение аргумента функции. EInvalidOp ‑ неопределенная операция с плавающей точкой. EOverFlow - переполнение при операции с вещественными числами. EUnderFlow - потеря значащих разрядов при операции с числами. EMCIDeviceError ‑ ошибка доступа к устройствам мультимедиа через MCI EMenuError ‑ ошибка в элементах меню. EOleCtrlError ‑ невозможность связать приложение и компонент ActiveX. EOleError ‑ низкоуровневая ошибка OLE. EOleSysError ‑ ошибка в интерфейсе OLE Idismatch. В ErrorCode ‑ код. EOleException ‑ ошибка OLE, связанная с методом или свойством. EOutLineError ‑ ошибка при работе с компонентом Outline. EOutOfMemory ‑ ошибка при динамическом выделении памяти. EOutOfResources ‑ нет места для размещения обработчика Windows. EPackageError ‑ исключение времени проектирования при работе пакета. EParserError ‑ ошибка при переводе описания формы в двоичный вид. EPrinter ‑ ошибка при печати (нет принтера, ошибка при передаче). Eprivilege ‑ недоступная по привилегиям команда процессора. EPropReadOnly ‑ изменить значение только читаемого свойства. EPropWriteOnly ‑ прочитать значение только записываемого свойства. EPropertyError ‑ ошибка при задании значения свойства. ERegisteryException ‑ ошибка при обращении к реестру. EReportError ‑ ошибка задания сервера для соединения базы и Report. EResNotFound ‑ ошибка при загрузке файла ресурсов.dfm или.res. EStackOverFlow ‑ переполнение стека (директива компилятора{$M+}). EStreamError ‑ ошибки потоков. EFCreateError ‑ ошибка при создании файла (уже есть файл,...). EFOpenError ‑ ошибка при открытии файла. EFilerError ‑ ошибки файловых потоков. EReadError ‑ невозможно прочитать заданное число байтов. EWriteError ‑ невозможно записать заданное число байтов. EClassNotFound ‑ компонент не связан с приложением. EInvalidImage ‑ невозможно прочесть файл ресурсов. EMethodNotFound ‑ невозможно найти реализацию метода. EStringListError ‑ ошибка доступа к окну списка с неверным индексом. EThread ‑ конфликт в многопоточном приложении. ETreeViewError ‑ ошибка индекса при работе с компонентом TreeView. EUnsupportedTypeError ‑ ошибка типа поля - размерности куба решений. EVariantError ‑ ошибка, связанная с типом данных Variant. EWin32Error ‑ ошибка Windows. Message - текст, выводимый обработчиком в окне сообщения. HelpContext ‑ номер экрана контекстно‑зависимой справки, вызываемой клавишей F1 из окна сообщения об ошибке. Файл справки предварительно нужно создать и связать его с приложением командой Project/Options/Application/Help file (п. 5.1). Конструкторы (методы) исключений позволяют сформировать свойства Message и Help. Create (const Msg: string). CreateFmt (const Msg: string, const Args:array of const). CreateRes (Ident: integer). CreateResFmt (Ident:integer, const Args:array of const). CreateHelp (const Msg: string, HelpContext:integer). CreateFmtHelp (const Msg: string, const Args:array of const, HelpContext). CreateResHelp (Ident,HelpContext:integer). CreateResFmtHelp (Ident:integer, const Args:array of const, HelpContext). Конструкторы, в имени которых нет Fmt или Res, присваивают свойству Message значение аргумента Msg. Конструкторы, в имени которых есть Fmt, содержат параметр Msg с описанием формата редактирования элементов массива Args (аналогично функции Format). Конструкторы, в имени которых есть Help, присваивают свойству HelpContext значение одноименного аргумента. Конструкторы, в имени которых есть Res, параметром Ident задают идентификатор строки ресурса (п. 1.3.1.2) сообщения или строки описания формата, если в имя входит Fmt. Примеры использования конструкторов: Type Emy=Class(Exception); // создание класса исключений (п. 1.6.9) Raise Emy.Create(‘Ошибка в параметрах’);//генерация исключения (п.1.6.7) Raise Emy.CreateFmt(‘Задано %d, а нужно%d’,[4,9]); // формат. сообщение Raise EZeroDivide.Create(‘Деление на ноль’); // генерация исключения Raise Emy.CreateRes(9); //свойство Message=строке ресурсов с номером 9 Raise Emy.CreateResFmt(8,[5,7]); // Message=отформатированные 5 и 7. 1.6.4. Блок зачистки Try‑ Finally ‑ End Try <операторы> Finally <всегда выполняемые операторы> End; Операторы, которые указаны после Finally, выполняются и при успешном, и при аварийном завершении работы операторов, указанных перед Finally. Это позволяет корректно завершить работу программы в исключительной ситуации, например, освободить динамически выделенную память, закрыть файлы, удалить временные файлы.
Дата добавления: 2014-12-08; Просмотров: 388; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |