Python:
Обробка помилок

Як це робити:

# Базовий блок try-except
try:
    # ризикований код
    number = int(input("Введіть число: "))
except ValueError:
    # обробити помилку
    print("Це не число!")

# Вказівка декількох винятків
try:
    # код, який може викликати різні винятки
    result = 10 / int(input("Введіть дільник: "))
except ZeroDivisionError:
    print("Упс! Не можна ділити на нуль.")
except ValueError:
    print("Мені потрібне число, друже.")

# Використання else і finally
try:
    number = int(input("Введіть число для піднесення до квадрату: "))
except ValueError:
    print("Я сказав число!")
else:
    # помилок не виникло
    print("Квадрат вашого числа:", number**2)
finally:
    # завжди виконується
    print("Дякую, що спробували це!")

Приклад виводу при введенні неправильного числа в першому блоку:

Введіть число: привіт
Це не число!

Підводимо підсумки

З початку програмування обробка помилок була критично важливою. Ранні підходи були примітивними, наприклад, перевірка умов перед кожною ризикованою операцією. Синтаксис try-except у Python запозичений від спадку обробки винятків у старших мовах, таких як C++ та Java, що спрощує процес.

Коли ви використовуєте try для блоку коду, Python спостерігає за будь-якими винятками. Якщо помилка виникає, блок except ловить її. Ви можете конкретизувати, які винятки ловити, або ловити всі за допомогою голого except. Однак, метод “конкретики на першому місці” є кращим підходом – він точний, а не просто всезагальний.

else та finally – це додаткові інструменти в цій концепції. Блок else виконується, якщо у блоку try не виникло помилок. finally – це надійний друг, що виконується незалежно від чого – думайте про операції очищення.

Альтернативи? Безумовно є. Деякі мови використовують коди повернення замість виключень. Ви можете також зіткнутися з операторами with для управління ресурсами або assertions для перевірки умов під час розробки. Але коли ми говоримо про міцні стратегії обробки помилок, модель try-catch виділяється завдяки своїй читабельності та структурі.

Дивіться також

Ось деякі гарні додаткові ресурси для глибшого занурення в тему: