Блок обробки винятків Try .. Finally

Блок обробки винятків Try .. Except може бути використаний в ситуаціях, коли відомо, як саме потрібно реагувати на помилку, що відбулась, навіть якщо програма і не намагається встановити її тип (не використовуються конструкції On..Do..Else) наприклад, у попередньому прикладі зовсім не важливо, чому стався виняток, а важливо тільки те, що результат функції не обчислений, і функція не може повернути результат своєї роботи. Відповідно, незалежно від типу помилки, функція повинна повернути значення NaN.

Однак зустрічаються ситуації, коли реакція програми на помилку не так важлива, як коректне завершення фрагмента програми, викликав цю помилку. Такі ситуації пов'язані зазвичай з необхідністю повернути операційній системі ресурси, виділені помилковому фрагменту програми. Причому, повернення ресурсів має відбутися як у випадку успішного, так і в разі помилкового виконання фрагмента. Для реалізації такої поведінки програмою передбачено блок обробки виключень Try. . Finally

При такому способі організації обробки виключень спочатку відбувається спроба виконати Фрагмент програми 1. У разі успішного його виконання, управління передається Фрагменту програми 2, і Блок обробки закінчується.

Якщо в Фрагменті програми 1 виникає виключна ситуація, то його виконання обривається, але управління все одно передається Фрагменту програми 2. Після виконання Фрагмента програми 2 виняток викидається знову і відбувається його обробка за звичайними правилами, наприклад, з допомогою блоку обробки винятків Try .. Except.