Винятки

Оновлено: 28.04.2023

Винятки — це засіб виходу зі звичайного потоку керування блоком коду для обробки помилок або інших виняткових умов. Виняток викликається в точці, де виявлено помилку; вона може оброблятися навколишнім блоком коду або будь-яким блоком коду, який прямо чи опосередковано викликав блок коду, де сталася помилка.

Інтерпретатор Python викликає виняток, коли виявляє помилку під час виконання (наприклад, ділення на нуль). Програма на Python також може явно викликати виняток за допомогою оператора raise. Обробники винятків визначаються оператором try … except. Речення finally такого оператора можна використовувати для визначення коду очищення, який не обробляє виняток, але виконується незалежно від того, чи виникла виняток у попередньому коді.

Python використовує модель «припинення» обробки помилок: обробник винятків може дізнатися, що сталося, і продовжити виконання на зовнішньому рівні, але він не може виправити причину помилки та повторити невдалу операцію (за винятком повторного введення несправної частини коду зверху).

Якщо виняток взагалі не обробляється, інтерпретатор припиняє виконання програми або повертається до основного інтерактивного циклу. У будь-якому випадку він друкує зворотне трасування стека, за винятком випадків, коли винятком є SystemExit.

Винятки визначаються екземплярами класу. Речення except вибирається залежно від класу примірника: воно має посилатися на клас примірника або його невіртуальний базовий клас. Примірник може бути отриманий обробником і може містити додаткову інформацію про винятковий стан.

Дивіться також опис оператора try у розділі Оператор try та оператора raise у розділі Оператор raise.

Виноски

1 Це обмеження виникає через те, що код, який виконується цими операціями, недоступний під час компіляції модуля.