Модуль 1.8 Базовий синтаксис

ОБРОБКА ПОМИЛОК

Курс: 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 sys

5. РОЗБІР ПО РЯДКАХ

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/except

8. ЗАВДАННЯ 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 показує що та де. Обробляй конкретні типи, не проковтуй мовчки.

Рефлексія

Прогрес модуля 0%