Ruff bare-except (E722)

bare-except в Ruff проверяет блоки try-except, которые используют пустой except: без указания конкретного исключения.

Почему это неправильно

Использование пустого except: перехватывает BaseException, включая KeyboardInterrupt, SystemExit, Exception и другие исключения. Это затрудняет прерывание программы (например, с помощью Ctrl-C) и может скрывать серьезные ошибки.

Пример ошибки

try:
    raise KeyboardInterrupt("Вы, вероятно, не хотите блокировать CTRL-C.")
except:
    print("Но пустой `except` игнорирует прерывания клавиатуры.")

Как правильно

try:
    do_something_that_might_break()
except MoreSpecificException as e:
    handle_error(e)

Если действительно необходимо перехватить неизвестную ошибку, используйте Exception, чтобы перехватывать стандартные ошибки программы, но не важные системные исключения.

def run_a_function(some_other_fn):
    try:
        some_other_fn()
    except Exception as e:
        print(f"Как необычно! {e}")