ОБРОБКА ПОМИЛОК
Курс: Python для аналітиків з нуля
1. ЩО НАВЧИМОСЯ РОБИТИ
Читати помилки Python, знати топ-10 типових помилок, обробляти збої у коді.
Помилки — не катастрофа, це інформація. Traceback показує де та чому зламалось. Навчимося читати та виправляти.
2. ТЕРМІНОЛОГІЯ
Exception (виключення)Помилка під час виконання програми. Зупиняє код якщо не обробити.
Traceback
Повідомлення про помилку: де сталась, що сталось, ланцюг викликів.
try/exceptКонструкція для обробки помилок. Спробувати код, перехопити помилку.
raise
Викинути помилку вручну.
finally
Блок коду що виконається завжди (після try або except).3. ТЕОРІЯ
3.1 Читання traceback
Приклад помилки:
Traceback (most recent call last):Як читати (знизу вгору):
1. KeyError: 'freq' — тип помилки, ключ 'freq' не існує
2. line 12, in process_data — помилка у функції process_data, рядок 12
3. value = data['freq'][0] — конкретний рядок коду
4. line 45, in module — викликано з головного коду, рядок 45
Висновок: у словнику data немає ключа 'freq'. Перевір назви колонок.
3.2 Базовий синтаксис
try:3.3 Топ-10 помилок Python
1. SyntaxError — помилка у синтаксисі
# Забув двокрапку2. IndentationError — неправильні відступи
# Немає відступу3. NameError — змінна не існує
print(result) # result не визначена4. TypeError — неправильний тип
# Додавання рядка та числа5. KeyError — ключ не існує у словнику
data = {"name": "Альфа"}6. IndexError — індекс за межами списку
numbers = [1, 2, 3]7. AttributeError — метод не існує
text = "hello"8. FileNotFoundError — файл не знайдено
with open('missing.txt', 'r') as f: # ПОМИЛКА9. ZeroDivisionError — ділення на нуль
result = 10 / 0 # ПОМИЛКА10. ImportError — модуль не знайдено
import nonexistent_module # ПОМИЛКА4. КОД З КОМЕНТАРЯМИ
Повний приклад обробки помилок при роботі з файлами:
import sys5. РОЗБІР ПО РЯДКАХ
try/except у циклі — обробляємо помилки окремо для кожного рядкаcontinue — пропустити поточну ітерацію, перейти до наступної
type(e).__name__ — отримати назву типу помилки як рядок
sys.exit(1) — завершити програму з кодом помилки
if not data.strip() — перевірка на порожній файл (тільки пробіли)6. ЗАВДАННЯ 1: ВИПРАВИТИ КОД
Код має 3 помилки:
data = [1, 2, 3]Відповіді:
1. Немає двокрапки після try
2. except без конкретної помилки (поганий стиль)3. pass — проковтує помилку мовчки, краще print
Виправлено:
data = [1, 2, 3]7. ЗАВДАННЯ 2: ЧИТАННЯ TRACEBACK
Розшифруй traceback:
Traceback (most recent call last):Відповіді:
1. Що сталось? Файл 'data.csv' не знайдено
2. Де? У функції analyze_frequencies, рядок 15
3. Як виправити? Перевірити шлях до файлу або додати try/except8. ЗАВДАННЯ 3: ПРОМПТ ДЛЯ AI
Задача: функція завантаження з URL з retry логікою
Приклад промпту:
Напиши функцію download_with_retry(url, max_attempts=3) що використовує requests.get(). Якщо помилка (timeout, connection error) — пауза 2 секунди та повтор. Після 3 спроб — повернути None. Обробка: requests.Timeout, requests.ConnectionError. Додай print для кожної спроби.
9. РЕФЛЕКСІЯ
Я вмію читати traceback
Я знаю топ-10 помилок Python
Я використовую try/except правильноЯ обробляю конкретні типи помилок
Я можу виправити зламаний код
10. ЩО ДАЛІ
Блок 1 завершено! Переходимо до Блоку 2 — робота з даними (JSON, pandas, API)Головна думка: Помилки — це інформація, не катастрофа. Traceback показує що та де. Обробляй конкретні типи, не проковтуй мовчки.