【问题标题】:python 3 try-except all with error [duplicate]python 3 try-except all with error [重复]
【发布时间】:2017-11-03 20:07:40
【问题描述】:

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

示例:

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

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

【问题讨论】:

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


    【解决方案1】:

    是的,你可以像这样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())
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

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

      或使用raise

      Docs永远是你的朋友

      提示:避免使用“except:”

      使用更具描述性的东西,例如

      ...
      except (ValueError, KeyError):
      

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

      【讨论】:

        猜你喜欢
        • 2019-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-24
        • 1970-01-01
        • 2018-06-18
        • 2016-12-27
        • 2013-02-20
        相关资源
        最近更新 更多