В ноутбуке аналитик написал except Exception: pass, чтобы код «не падал». Почему это считается плохой практикой, если цель — быстро находить и исправлять проблемы?

AПотому что инструкция pass замедляет работу интерпретатора и заметно увеличивает общее время выполнения ноутбука на больших данных.
BПотому что except Exception: ловит только KeyError, а остальные исключения вроде ValueError всё равно прервут выполнение ячейки.
CПотому что такая конструкция запрещена синтаксисом Python: pass нельзя использовать в качестве тела блока except без других инструкций.
DПотому что ошибки молча скрываются: данные могут стать неверными, а трассировка и первопричина проблемы теряются для последующей отладки.
Правильный ответ. Широкий перехват с молчаливым pass скрывает реальные ошибки, ломает отладку и приводит к тихим дефектам в данных.

Разбор

Задача обработки исключений — не «чтобы не падало», а чтобы поведение оставалось корректным и диагностируемым. except Exception: pass превращает реальные ошибки в тихие дефекты: метрики могут считаться неправильно, и вы не узнаете почему. Лучше ловить конкретные исключения и явно решать, что делать: записать в лог, поставить None, прекратить выполнение или поднять исключение через raise. Это сохраняет трассировку и помогает быстро найти первопричину.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Исключения и отладка»