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}")