Как устроен под капотом механизм исключений в Python? Почему использование конструкции except Exception считается антипаттерном в продакшене и какие критические системные исключения она может случайно перехватить?

Исключения распространяются по стеку до подходящего обработчика, выполняя необходимые finally. except Exception опасен не сам по себе, а когда скрывает неожиданные ошибки и продолжает работу.

Короткий ответ

Что ответить на собеседовании

Исключения распространяются по стеку до подходящего обработчика, выполняя необходимые finally. except Exception опасен не сам по себе, а когда скрывает неожиданные ошибки и продолжает работу.

Подробный разбор

Ответ с пояснениями

Исключения распространяются по стеку до подходящего обработчика, выполняя необходимые finally. except Exception опасен не сам по себе, а когда скрывает неожиданные ошибки и продолжает работу.

Обрабатывайте ожидаемый сбой узко, например ошибку конкретной внешней операции. На верхней границе запроса широкий перехват может быть оправдан для отчёта об ошибке и контролируемого завершения. MemoryError и RecursionError входят в Exception, но KeyboardInterrupt, SystemExit и GeneratorExit — нет. Голый except: или except BaseException охватывает значительно больше. Нельзя считать запись ошибки в лог полноценным восстановлением согласованности после любого исключения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее