python 3 try-кроме всех с ошибкой

Можно ли сделать try-except, поймать все, что все еще показывает ошибку, не перехватывая все возможные исключения? У меня есть случай, когда исключения будут происходить раз в день каждые несколько дней в сценарии, работающем 24/7. Я не могу позволить сценарию умереть, но они также не имеют значения, поскольку он повторяет попытки независимо от того, сколько я пытаюсь, кроме всего. Поэтому, пока я отслеживаю любые последние редкие исключения, я хочу записать их в файл для будущей отладки.

пример:

try:
    print(555)
except:
    print("type error: "+ str(the_error))

Есть ли способ заменить the_error трассировкой стека или чем-то подобным?


person Ryan Mills    schedule 03.11.2017    source источник


Ответы (2)


Да, вы можете отловить все ошибки следующим образом:

try:
    print(555)
except Exception as e:
    print("type error: " + str(e))

Для трассировки стека я обычно использую модуль traceback:

import traceback

try:
    print(555)
except Exception as e:
    print("type error: " + str(e))
    print(traceback.format_exc())
person Cyzanfar    schedule 03.11.2017

Ты можешь сделать:

   try:
       print(555)
   except Exception as err:
      print("Erro {}".format(err))

Или используйте raise

Документы всегда ваши друзья

Совет: избегайте использования «кроме:»

Используйте что-то более описательное, например

...
except (ValueError, KeyError):

Если ваш код не будет тщательно протестирован, вы не сможете выявить каждую ошибку.

person Joao Vitorino    schedule 03.11.2017