Конспект і таймкоди
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, які слід розрізняти.
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 повторюється й потребує власного змісту. Обробка має або відновити коректний стан, або завершити тест із точним сигналом — не просто продовжити виконання після невідомої помилки.