python 3 try-except 全部出错

python 3 try-except all with error

是否可以在不捕获所有可能的异常的情况下执行 try-except catch all 仍然显示错误?我有一个情况,在脚本 运行 24/7 中每隔几天每天都会发生一次异常。我不能让脚本死掉,但它们也无关紧要,因为只要我尝试除了所有内容,它都会重试。因此,当我追踪任何最后的罕见异常时,我想将它们记录到一个文件中以供将来调试。

示例:

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

有什么方法可以用堆栈跟踪或类似的东西替换 the_error

是的,你可以 catch all errors 像这样:

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())

你可以做到:

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

或使用raise

Docs永远是你的朋友

Tip: Avoid use "except:"

使用更具描述性的内容,例如

...
except (ValueError, KeyError):

除非你的代码经过很好的测试,否则你无法找出每一个错误。