Обробка винятків контрацепція, Програмування мовою паскаль

Реклама на сайті

Обробка винятків контрацепція

Класи винятків визначені у модулях Classes та SysUtils. Використовуються для обробки виняткових ситуацій, що виникають під час виконання програми. Наприклад, спроба відкрити файл, якого немає.

Базовий клас винятків – Exception. Його нащадки – класи винятків, імена яких починаються із символу E, за яким слідує опис винятку англійською мовою.

У модулі SusUtils визначено багато винятків. Ось приклади:

  • EIntError - помилка операції з цілими числами.
  • EZeroDivide – розподіл на нуль.
  • ERangeError – помилка діапазону.
  • EIntOverflow – помилка переповнення.
  • EMathError – математична помилка.

Для обробки винятків передбачено три інструкції:

  • інструкції Raise,
  • блоки try…except,
  • блоки try…finally.

Увага . Ці інструкції доступні у режимах Delphi та ObjPas. У режимі Turbo Pascal вони неможливі.

Інструкція Raise

Інструкція Raise запускає виняток, який попередньо має бути визначений як екземпляр класу винятків. Формат інструкції:

У разі оголошеного винятку ініціалізується екземпляр класу цього винятку. Приклад обробки поділу на нуль, коли цьому винятку надано унікальне ім'я:

Type EDivException = Class (Exception);

Function DoDiv (X, Y: Longint): Integer;

Raise EDivException.Create ('Division by Zero would occur');

Result := X Div Y;

Інструкція try…except

  • Виконується секція try.
  • Якщо виняток немає, то інструкція завершується.
  • Якщо виняток виникає, то секція tryзавершується і виконується обробник виключення з секції except.

Формат обробника винятків у секції except

do; // Будь-яка інструкція, крім goto

Приклад обробки поділу на нуль (використані засоби попереднього прикладу):

На EDivException do Z := 0;

Інструкція try…finally

У ній у разі винятку секція try завершується, виняток спеціально не обробляється, але завжди виконується секція finally. Формат інструкції:

  • Виконується група try.
  • Якщо виняток виник, всі інструкції, наступні після інструкції, що викликала виняток, пропускаються, і управління передається першою інструкція секції finally.

Якщо винятків не виникло, секція finally все одно виконується.