Нижче Ви знайдете довідкову інформацію з визначеним виключенням, необхідну для професійного програмування в Delphi.
· Exception - базовий клас-предок всіх оброблювачів виняткових ситуацій.
· EAbort - “сховане” виключення. Використовуйте його тоді, коли хочете перервати той чи інший процес з умовою, що користувач програми не повинний бачити повідомлення про помилку. Для підвищення зручності використання в модулі SysUtils передбачена процедура Abort, визначена, як:
procedure Abort;
begin
raise EAbort.CreateRes(SOperationAborted) at ReturnAddr;
end;
· EComponentError -викликається в двох ситуаціях:
1) при спробі реєстрації компоненти за межами процедури Register;
2) коли ім'я компонента не унікально чи не припустимо.
· EConvertError -відбувається у випадку виникнення помилки при виконанні функцій StrToInt і StrToFloat, коли конвертація рядка у відповідний числовий тип неможлива.
· EInOutError - відбувається при помилках уведення/виведення при включеній директиві {$I+}.
· EIntError - предок виключень, що случаються при виконанні цілочисельних операцій.
· EDivByZero - викликається у випадку розподілу на нуль, як результат RunTime Error 200.
· EIntOverflow - викликається при спробі виконання операцій, що приводять до переповнення цілих перемінних, як результат RunTime Error 215 при включеній директиві {$Q+}.
· ERangeError - викликається при спробі звертання до елементів масиву по індексі, що виходить за межі масиву, як результат RunTime Error 201 при включеній директиві {$R+}.
· EInvalidCast - відбувається при спробі приведення перемінних одного класу до іншого класу, несумісному з першим (наприклад, приведення перемінної типу TListBox до TMemo).
· EInvalidGraphic - викликається при спробі передачі в LoadFromFile файлу, несумісного графічного формату.
· EInvalidGraphicOperation - викликається при спробі виконання операцій, непридатних для даного графічного формату (наприклад, Resize для TIcon).
· EInvalidObject -реально ніде не використовується, оголошений у Controls.pas.
· EInvalidOperation - викликається при спробі чи відображення звертання по Windows-оброблювачі (handle) контрольного елемента, що не має власника (наприклад, відразу після виклику MyControl:=TListBox.Create(...) відбувається звертання до методу Refresh).
· EInvalidPointer - відбувається при спробі звільнення вже звільненого чи ще неиніційованого покажчика, при виклику Dispose(), FreeMem() чи деструктора класу.
· EListError - викликається при звертанні до елемента спадкоємця TList по індексу, що виходить за межі припустимих значень (наприклад, об'єкт TStringList містить тільки 10 рядків, а відбувається звертання до одинадцятого).
· EMathError - предок виключень, що случаються при виконанні операцій із крапкою, що плаває.
· EInvalidOp - відбувається, коли математичному співпроцесору передається помилкова інструкція. Таке виключення не буде до кінця оброблено, поки Ви контролюєте співпроцесор прямо з ассемблерного коду.
· EOverflow - відбувається як результат переповнення операцій із крапкою, що плаває, при занадто великих величинах. Відповідає RunTime Error 205.
· Underflow - відбувається як результат переповнення операцій із крапкою, що плаває, при занадто малих величинах. Відповідає RunTime Error 206.
· EZeroDivide - викликається в результаті розподілу на нуль.
· EMenuError - викликається у випадку будь-яких помилок при роботі з пунктами меню для компонентів TMenu, TMenuItem, TPopupMenu і їхніх спадкоємців.
· EOutlineError - викликається у випадку будь-яких помилок при роботі з TOutLine і будь-якими його спадкоємцями.
· EOutOfMemory - відбувається у випадку викликів New(), GetMem() чи конструкторів класів при неможливості розподілу пам'яті. Відповідає RunTime Error 203.
· EOutOfResources - відбувається в тому випадку, коли неможливе виконання запиту на чи виділення заповнення тих чи інших Windows ресурсів (наприклад таких, як оброблювачі - handles).
· EParserError - викликається коли Delphi не може зробити розбір і переклад тексту опису форми в двійковий вид (часто відбувається у випадку виправлення тексту опису форми вручну в IDE Delphi).
· EPrinter - викликається у випадку будь-яких помилок при роботі з принтером.
· EProcessorException - предок виключень, викликуваних у випадку переривання процесора- hardware breakpoint. Ніколи не включається в DLL, може оброблятися тільки в “цільному” додатку.
· EBreakpoint - викликається у випадку останова на крапці переривання при налагодженні в IDE Delphi. Середовище Delphi обробляє це виключення самостійно.
· EFault - предок виключень, викликуваних у випадку неможливості обробки процесором тих чи інших операцій.
EGPFault - викликається, коли відбувається “загальне порушення захисту” - General Protection Fault. Відповідає RunTime Error 216.
EInvalidOpCode - викликається, коли процесор намагається виконати неприпустимі інструкції.
EPageFault - звичайно відбувається як результат помилки менеджера пам'яті Windows, унаслідок деяких помилок у коді Вашого додатка. Після такого виключення рекомендується запустити знову Windows.
EStackFault - відбувається при помилках роботи зі стеком, часто внаслідок некоректних спроб доступу до стеку з фрагментів коду на ассемблері. Компіляція Ваших програм із включеною перевіркою роботи зі стеком {$S+} допомагає відстежити такого роду помилки.
· ESingleStep - аналогічно EBreakpoint, це виключення відбувається при покроковому виконанні додатка в IDE Delphi, що сама його й обробляє.
· EPropertyError - викликається у випадку помилок у редакторах властивостей, що вбудовуються в IDE Delphi. Має велике значення для написання надійних property editors. Визначений у модулі DsgnIntf.pas.
· EResNotFound- відбувається у випадку тих чи інших проблем, що мають місце при спробі завантаження ресурсів форм - файлів .DFM у режимі дизайнера. Часто причиною таких виключень буває порушення відповідності між визначенням класу форми і її описом на рівні ресурсу (наприклад,унаслідок зміни порядку проходження заслань-полів-посилань на компоненти, вставлені у форму в режимі дизайнера).
· EStreamError - предок виключень, викликуваних при роботі з потоками.
· EFCreateError- відбувається у випадку помилок створення потоку (наприклад, при некоректному завданні файлу потоку).
· EFilerError - викликається при спробі вторинної реєстрації вже зареєстрованого класу (компоненти). Є, також, предком спеціалізованих оброблювачів виключень, що виникають при роботі з класами компонентів.
· EClassNotFound- звичайно відбувається, коли в описі класу форми вилучене заслання-стать-посилання на компонент, вставлений у форму в режимі дизайнера. Викликається, на відміну від EResNotFound, у RunTime.
· EInvalidImage- викликається при спробі читання файлу, що не є ресурсом, чи зруйнованого файлу ресурсу, спеціалізованими функціями читання ресурсів (наприклад, функцією ReadComponent).
· EMethodNotFound- аналогічно EClassNotFound, тільки при невідповідності методів, зв'язаних з тими чи іншими оброблювачами подій.
· EReadError- відбувається в тому випадку, коли неможливо прочитати значення чи властивості іншого набору байт із потоку (у тому числі ресурсу).
· EFOpenError- викликається коли той чи інший специфікований потік не може бути відкритий (наприклад, коли потік не існує).
· EStringListError - відбувається при помилках роботи з об'єктом TStringList (крім помилок, оброблюваних TListError).
3.4.1 Виключення, що виникають при роботі з базами даних
Delphi, володіючи прекрасними засобами доступу до даних, що ґрунтуються на інтерфейсі IDAPI, реалізованої у виді бібліотеки Borland Database Engine (BDE), включає ряд оброблювачів виняткових ситуацій для реєстрації помилок у компонентах VCL працюючим із БД. Дамо коротку характеристику основним з них:
· EDatabaseError - спадкоємець Exception ; відбувається при помилках доступу до даних у компонентах-спадкоємцях TDataSet. Оголошено в модулі DB. Нижче приведений приклад з Delphi On-line Help, присвячений цьому виключенню:
· EDBEngineError - спадкоємець EDatabaseError ; викликається, коли відбуваються помилки BDE чи на сервері БД. Оголошено в модулі DB:
Особливо важливі дві властивості класу EDBEngineError :
Errors - список усіх помилок, що знаходяться в стеці помилок BDE. Індекс першої помилки 0;
ErrorCount - кількість помилок у стеці.
Об'єкти, що містяться в Errors, мають тип TDBError. Доступні властивості класу TDBError:
ErrorCode - код помилки, що повертається Borland Database Engine;
Category - категорія помилки, описаної в ErrorCode;
SubCode - ‘субкод’ помилки з ErrorCode;
NativeError - помилка, що повертається сервером БД. Якщо NativeError 0, то помилка в ErrorCode не від сервера;
Message - повідомлення, передане сервером, якщо NativeError не дорівнює 0; повідомлення BDE - у противному випадку.
· EDBEditError - спадкоємець Exception ; викликається, коли дані не сумісні з маскою введення, накладеної на поле. Оголошено в модулі Mask.