Модуль 7A: Налагодження та обробка помилок (глибше)

Читання traceback — як розуміти повідомлення про помилки

📖 Теорія
Коли Python зустрічає помилку, він показує traceback (трасування) — докладне повідомлення про те, що пішло не так.

Структура traceback (читаємо знизу вгору):
1. Останній рядок — тип помилки та опис (наприклад: TypeError: unsupported operand type(s))
2. Вище — рядок коду, де сталася помилка
3. Ще вище — файл та номер рядка
4. Якщо викликів було кілька — ланцюжок викликів від початку до місця помилки

Чому важливо читати traceback:
• Він точно вказує рядок з помилкою
• Він пояснює тип проблеми
• Він показує шлях виконання коду

Порада: завжди починайте читати traceback з останнього рядка — там найважливіше.
💡 Приклад коду
Вивід:

                        
📝 ЗАВДАННЯ (2)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 208
" data-task-id="
Warning: Undefined array key "id" in /home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 209
" data-xp="10">
1.
Завдання: Прочитай traceback
10 XP
Запустіть код нижче та прочитайте traceback. Визначте: тип помилки, номер рядка, причину. Виправте код.

Код:
name = 'Діма'
age = '25'
print(name + ' — вік: ' + age + 1)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: Зверніть увагу на типи даних: age — рядок, а 1 — число. Додавання рядка і числа викликає TypeError.
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
🔓 Розв'язок:
name = 'Діма'
age = '25'
# Помилка: не можна додавати рядок і число
# Виправлення:
print(name + ' — вік: ' + str(int(age) + 1))
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 296
">
Вивід:

                                
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 304
">

/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 208
" data-task-id="
Warning: Undefined array key "id" in /home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 209
" data-xp="20">
2.
Завдання: Знайди помилку за traceback
20 XP
Ось traceback:
Traceback (most recent call last):
File "main.py", line 3, in <module>
result = calculate(10, 0)
File "main.py", line 2, in calculate
return a / b
ZeroDivisionError: division by zero

Відповідайте: 1) Яка помилка? 2) У якій функції? 3) Який рядок? 4) Напишіть виправлену функцію calculate.
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 278
">
💡 Підказка: ZeroDivisionError — ділення на нуль. Додайте перевірку if b == 0.
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 287
">
🔓 Розв'язок:
def calculate(a, b):
    if b == 0:
        print('Помилка: ділення на нуль!')
        return None
    return a / b

result = calculate(10, 0)
print(result)
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 296
">
Вивід:

                                
/home/u994965865/domains/navychky.com.ua/public_html/course/lesson.php on line 304
">