【问题标题】:Catch anything and save it into a variable捕捉任何东西并将其保存到变量中
【发布时间】:2016-10-16 22:46:38
【问题描述】:

我想知道 python except 中是否有“all”的关键字。我遇到了这个看似简单的问题:

try:
    #do stuff
except any as error:
    print('error: {err}'.format(err=error))

我知道您可以使用except: 来捕获所有错误,但我不知道如何添加as 关键字来获取printable 对象。我想捕捉任何错误并能够获取用于打印或其他用途的对象。

【问题讨论】:

  • 你可以做一个裸体的except:,但这被认为是一种糟糕的做法。

标签: python except


【解决方案1】:

您几乎可以通过这种方式捕捉到任何东西:

try:
    #do stuff
except Exception as error:
    print('error: {err}'.format(err=error))

但要真正捕获所有内容,您可以这样做:

import sys

try:
    #do stuff
except:
    err_type, error, traceback = sys.exc_info()
    print('error: {err}'.format(err=error))

【讨论】:

  • 谢谢,第二个例子会捕捉到什么样的东西,而不是第一个?
  • @JackHughes SystemExitStopIteration 等;不是真正的错误并且你真的不想抓住的事情(至少在没有立即重新加注的情况下不会)。
  • @chepner 嗯好的
【解决方案2】:

是的,只要抓住Exception

except Exception as ex:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多