Python:如何让代码适用于所有失败

Python: how to have code apply to all failures

我正在 python 中使用 pdb 模块;我最近才发现它,所以我是初学者。我想要做的是有一个变量,如果为真,将在脚本中发生的所有失败时调用 set_trace(),而不将其全部放在 try/except 语句中。例如,我想要以下没有 try/except 的功能:

from pdb import set_trace

debug = True
try:
    #entire script here

except Exception, e:
    if debug:
        set_trace()
    else:
        print e

有没有一种方法可以做到这一点而无需那么大的 try except 语句(也不必为每个可能失败的命令执行 if 语句)?

谢谢。

您可以自定义 excepthook

When an exception is raised and uncaught, the interpreter calls sys.excepthook with three arguments, the exception class, exception instance, and a traceback object


import sys
import pdb

debug = True

def excepthook(type_, value, traceback):
    if debug:
        pdb.set_trace()
    else:
        print(value)
        # Per mgilson's suggestion, to see the full traceback error message
        # sys.__excepthook__(type_, value, traceback)   

sys.excepthook = excepthook

1 / 0

如果你想要在 debugFalse 时出现通常的回溯错误消息,那么上面的内容可以简化为

if debug:
    sys.excepthook = lambda type_, value, traceback: pdb.set_trace()