Исключения в Python теперь считаются анти-паттерном
Проблемы исключений
Трудно найти недостатки в том, с чем сталкиваешься каждый день. Привычка и зашоренность превращает баги в фичи, но давайте попробуем взглянуть на исключения непредвзято.
Исключения трудно заметить
Существует два типа исключений: «явные» создаются при помощи вызова
raise прямо в коде, который вы читаете; «скрытые» запрятаны в используемых функциях, классах, методах.Проблема в том, что «скрытые» исключения и правда трудно заметить. Покажу на примере чистой функции:
def divide(first: float, second: float) -> float:
return first / second
Функция просто делит одно число на другое, возвращая
float. Типы проверены и можно запустить что-то такое: result = divide(1, 0)
print('x / y = ', result)
Заметили? На самом деле до
print исполнение программы никогда не дойдет, потому что деление 1 на 0 – невозможная операция, она вызовет ZeroDivisionError. Да, такой код безопасен с точки зрения типов, но его все равно нельзя использовать. 






Эта статья не для матёрых укротителей Python’а, для которых распутать этот клубок змей — детская забава, а скорее поверхностный обзор многопоточных возможностей для недавно подсевших на питон. 



