作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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
如果您想要在 debug
为 False
时出现通常的回溯错误消息,则上述内容可以简化为
if debug:
sys.excepthook = lambda type_, value, traceback: pdb.set_trace()
关于Python:如何让代码适用于所有失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155161/
我是一名优秀的程序员,十分优秀!