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
如果你想要在 debug
为 False
时出现通常的回溯错误消息,那么上面的内容可以简化为
if debug:
sys.excepthook = lambda type_, value, traceback: pdb.set_trace()
我正在 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()