У меня есть список функций, которые могут завершиться неудачно, и если один из них не работает, я не хочу, чтобы script останавливался, но продолжал следующую функцию.
Я выполняю его с чем-то вроде этого:
list_of_functions = [f_a,f_b,f_c]
for current_function in list_of_functions:
try:
current_function()
except Exception:
print(traceback.format_exc())
Он работает нормально, но не совместим с PEP8:
При перехвате исключений укажите конкретные исключения возможно вместо использования оголенного, за исключением:.
Например, используйте:
try: import platform_specific_module except ImportError: platform_specific_module = None
Голый, кроме: предложение будет ловить SystemExit и KeyboardInterrupt исключений, затрудняя прерывание программы с помощью Control-C, и может маскировать другие проблемы. Если вы хотите поймать все исключения что ошибки сигнальной программы, используйте исключение Исключение: (голый кроме эквивалентно исключению BaseException:).
Хорошее эмпирическое правило состоит в том, чтобы ограничить использование голых "исключая" статей до двух случаи:
Если обработчик исключений будет распечатывать или регистрировать трассировку; по крайней мере, пользователь будет знать, что произошла ошибка.
Если код должен выполнять некоторую работу по очистке, но затем позволяет исключение распространяться вверх с повышением. попробуй... наконец, может быть лучше способ обработки этого случая.
Как это хорошо?