Класи виняткових ситуацій
Загальний клас виняткових ситуацій цілочисельний арифметики, від якого породжені класи EDivByZero, ERangeError і EIntOverflow. Загальний клас виняткових ситуацій речової математики, від якого породжені класи EInvalidOp, EZeroDivide, EOverflow і EUnderflow. Виняткова ситуація, що виникла за межами програми, наприклад в DLL-бібліотеці, розробленої на мові C + +. Як описуються класи виняткових… Читати ще >
Класи виняткових ситуацій (реферат, курсова, диплом, контрольна)
Виняткові ситуації в мові Delphi описуються класами. Кожен клас відповідає певному типу виняткових ситуацій. Коли в програмі виникає виняткова ситуація, створюється об'єкт відповідного класу, який переносить інформацію про цю ситуацію з місця виникнення до місця обробки.
Класи виняткових ситуацій утворюють ієрархію, коренем якої є клас Exception. Клас Exception описує найзагальніший тип виняткових ситуацій, а його спадкоємці - конкретні види таких ситуацій (таблиця 1.1). Наприклад, клас EOutOfMemory породжений від Exception і описує ситуацію, коли вільна оперативна пам’ять вичерпана.
У наступній таблиці наведено стандартні класи виняткових ситуацій, оголошені в модулі SysUtils. Вони покривають практично весь спектр можливих помилок. Якщо їх все-таки виявиться недостатньо, ви можете оголосити нові класи виняткових ситуацій, породжені від класу Exception або його спадкоємців.
Таблиця 1.1 — Класи виняткових ситуацій.
Клас виняткових ситуацій. | Опис. | |
EAbort. | " Мовчазна" виняткова ситуація, яка використовується для виходу з декількох рівнів вкладених блоків або підпрограм. При цьому на екран не видається ніяких повідомлень про помилку. Для генерації виключної ситуації класу EAbort потрібно викликати стандартну процедуру Abort. | |
EInOutError. | Помилка доступу до файлу або пристрою введення-виведення. Код помилки міститься в поле ErrorCode. | |
EExternal. | Виняткова ситуація, що виникла поза програмою, наприклад, в операційній системі. | |
EExternalException. | Виняткова ситуація, що виникла за межами програми, наприклад в DLL-бібліотеці, розробленої на мові C + +. | |
EHeapException. | Загальний клас виняткових ситуацій, що виникають при роботі з динамічною пам’яттю. Є базовим для класів EOutOfMemory і EInvalidPointer. Увага! Створення виняткових ситуацій цього класу (і всіх його нащадків) повністю бере на себе середовище Delphi, тому ніколи не створюйте такі виняткові ситуації за допомогою оператора raise. | |
EOutOfMemory. | Вільна оперативна пам’ять вичерпана (див. EHeadException). | |
EInvalidPointer. | Спроба звільнити недійсний вказівник (див. EHeadException). Зазвичай це означає, що покажчик вже звільнений. | |
EIntError. | Загальний клас виняткових ситуацій цілочисельний арифметики, від якого породжені класи EDivByZero, ERangeError і EIntOverflow. | |
EDivByZero. | Спроба ділення цілого числа на нуль. | |
ERangeError. | Вихід за межі діапазону цілого числа або результату цілочисельного виразу. | |
EIntOverflow. | Переповнення в результаті целочисленной операції. | |
EMathError. | Загальний клас виняткових ситуацій речової математики, від якого породжені класи EInvalidOp, EZeroDivide, EOverflow і EUnderflow. | |
EInvalidOp. | Невірний код операції речової математики. | |
EZeroDivide. | Спроба ділення дійсного числа на нуль. | |
EOverflow. | Втрата старших розрядів дійсного числа в результаті переповнення розрядної сітки. | |
EUnderflow. | Втрата молодших розрядів дійсного числа в результаті переповнення розрядної сітки. | |
EInvalidCast. | Невдала спроба приведення об'єкта до іншого класу за допомогою оператора as. | |
EConvertError. | Помилка перетворення даних за допомогою функцій IntToStr, StrToInt, StrToFloat, StrToDateTime. | |
EAccessViolation. | Додаток здійснило доступ до невірного адресою в пам’яті. Зазвичай це означає, що програма звернулася за даними по неініціалізованих вказівником. | |
EPrivilege. | Спроба виконати привілейовану інструкцію процесора, на яку програма не має права. | |
EStackOverflow. | Стек програми не може бути більше збільшений. | |
EControlC. | Під час роботи консольного застосування користувач натиснув комбінацію клавіш Ctrl + C. | |
EAssertionFailed. | Виникає при виклику процедури Assert, коли перший параметр дорівнює значенню False. | |
EPackageError. | Проблема під час завантаження та ініціалізації бібліотеки компонентів. | |
EOSError. | Виняткова ситуація, що виникла в операційній системі. | |
Спадкування класів дозволяє створювати сімейства родинних виняткових ситуацій. Прикладом такого сімейства є класи виняткових ситуацій речової математики, які оголошені в модулі SysUtils наступним чином.
type.
EMathError = class (Exception);
EInvalidOp = class (EMathError);
EZeroDivide = class (EMathError);
EOverflow = class (EMathError);
EUnderflow = class (EMathError);
Клас виняткових ситуацій EMathError є базовим для класів EInvalidOp, EZeroDivide, EOverflow і EUnderflow, тому, обробляючи виняткові ситуації класу EMathError, ви будете обробляти всі помилки речової математики, включаючи EInvalidOp, EZeroDivide, EOverflow і EUnderflow.
Неважко помітити, що імена класів винятків починаються з букви E (Від слова Exception). Цього правила корисно дотримуватися при оголошенні власних класів винятків, наприклад:
type.
EMyException = class (Exception).
MyErrorCode: Integer;
end;
Як описуються класи виняткових ситуацій зрозуміло, розглянемо тепер, як такі ситуації обробляються.