Программа продолжает работу после ошибки, но теперь её трудно остановить. Причиной может быть обработчик без указанного типа исключения:
try:
raise KeyboardInterrupt
except:
print("Перехватили даже прерывание")
KeyboardInterrupt и SystemExit наследуются от BaseException, но не от Exception. Голый except: ловит их тоже; except Exception: оставляет такие сигналы завершения в покое.Это не означает, что
except Exception: нужно ставить везде. Если ожидаете ошибку преобразования строки в число, ловите ValueError вокруг этого преобразования. Тогда случайный NameError в соседней логике не превратится в сообщение «Введите число».Разбор иерархии исключений помогает выбрать границу обработки. Перехватывать стоит те отказы, для которых у программы есть осмысленный способ продолжить работу.
