python 3尝试 - 除了所有错误

时间:2017-11-03 20:07:41

标签: python python-3.x try-except

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

示例:

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

用堆栈跟踪或类似方法替换the_error的任何方法?

2 个答案:

答案 0 :(得分:72)

是的你可以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())

答案 1 :(得分:6)

你可以这样做:

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

或使用加注

Doc's永远是你的朋友

提示:避免使用"除了:"

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

...
except (ValueErro, KeyError):

除非您的代码经过严格测试,否则您无法找出每个错误。