← Python мануфактура

Конспект і таймкоди

0:00

Помилки parsing і зовнішні дані

Перетворення int("not-a-number") спричиняє ValueError. Подібні помилки виникають із CSV, UI text або API payload, коли фактичний формат не відповідає очікуваному. Fallback на 0 чи інше значення допустимий лише коли це частина явного контракту; інакше він приховає дефект даних.

1:02

`try` та конкретний `except`

У try розміщують лише операцію, яка очікувано може впасти, а except ValueError обробляє конкретний failure type. Широке except Exception: pass стирає сигнал і ускладнює debugging. Selenium, filesystem, network і parsing мають різні exception classes, які слід розрізняти.

2:03

`finally` для cleanup

finally виконується незалежно від успіху або exception. Це місце для закриття database connection, file handle чи іншого обмеженого ресурсу. У прикладі timeout query обробляється, але connection усе одно закривається, щоб не вичерпати pool під навантаженням.

3:30

Корисний test failure через `raise ... from ...`

Якщо UI price або status code неможливо перетворити на число, тест може підняти AssertionError("Status code must be numeric") from error. Так повідомлення пояснює бізнес-очікування, а exception chaining зберігає первинний ValueError і stack trace.

5:33

`else`, custom exceptions і межі обробки

else після try/except виконується лише коли exception не було; finally — завжди. Custom exception доречний, коли domain-specific failure повторюється й потребує власного змісту. Обробка має або відновити коректний стан, або завершити тест із точним сигналом — не просто продовжити виконання після невідомої помилки.