Вопрос о возобновлении работы с ошибкой — это первое, чему я научился на своей первой работе
TL;DR: не избегайте исключений. Разберитесь с ними.
Проблемы
- Нарушение принципа Fail Fast
Решения
- Перехватите исключение и обработайте его явно
Контекст
В первые дни программирования мы привилегировали работающие системы перед обработкой ошибок.
Мы эволюционировали.
Образец кода
Неправильный
# bad import logging
def send_email(): print("Sending email") raise ConnectionError("Oops")
try: send_email() except: # AVOID THIS pass
Верно
import logging
logger logging.getLogger(__name___) try: send_email() except ConnectionError as exc: logger.error(f"Cannot send email {exc}")
Обнаружение
[Х] Автоматически
Многие линтеры предупреждают нас о пустых блоках исключений.
Исключения
Если нам нужно пропустить и игнорировать исключение, мы должны задокументировать его явно.
Теги
- Исключения
Заключение
Подготовьтесь к работе с ошибками.
Даже если вы решите ничего не делать, вы должны четко сформулировать это решение.
связи
Больше информации
При ошибке возобновить следующий пакет
Отказ от ответственности
Code Smells — это всего лишь мое мнение.
Кредиты
Фото автора Джеймс Бест на Unsplash
Спасибо @Ян Джакомелли
Оптимизация препятствует эволюции. Все должно строиться сверху вниз, кроме первого раза. Простота не предшествует сложности, а следует за ней.
Алан Перлис
Эта статья является частью серии CodeSmell.