Вопрос о возобновлении работы с ошибкой — это первое, чему я научился на своей первой работе

TL;DR: не избегайте исключений. Разберитесь с ними.

Проблемы

  • Нарушение принципа Fail Fast

Решения

  1. Перехватите исключение и обработайте его явно

Контекст

В первые дни программирования мы привилегировали работающие системы перед обработкой ошибок.

Мы эволюционировали.

Образец кода

Неправильный

# 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.