我正在使用python中的pdb模块;我最近才发现它,所以我是一个初学者。我要做的是有一个变量,如果为True,将对脚本中发生的所有失败调用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
。
当引发异常且未捕获异常时,解释器调用sys.excepthook
有三个参数,异常类、异常实例和回溯
对象
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
如果您希望在
debug
为False
时出现通常的回溯错误消息,则可以将上述内容简化为if debug:
sys.excepthook = lambda type_, value, traceback: pdb.set_trace()