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 виділяється завдяки своїй читабельності та структурі.
Дивіться також
Ось деякі гарні додаткові ресурси для глибшого занурення в тему:
- Офіційна документація Python про помилки та винятки: Python Docs – Помилки та винятки
- Посібник від Real Python на цю тему: Real Python - Блок try/except/else/finally
- Обговорення найкращих практик обробки помилок: Stack Overflow – Як правильно ігнорувати винятки?