我想做这样的事情,但是我想提出一个异常,当我使用pdb时,它会把我放到有风险的函数中
def outer_func(debug=True):
for i in some_lst:
try:
risky_func(i)
except Exception as e:
if debug:
raise e # go back to risky_func context in stack where exception originally occurred
# alternatively: pdb.set_trace(), but also going back to risky_func context
else:
pass
我唯一能想到的就是把try/catch放在func中,并将debug参数传递给它,但这真的很不雅观
如果使用
raise e
,Python就无法知道e
是新的异常还是与以前相同的异常。如果您只是单独使用raise
,它将再次抛出与上次相同的异常同样的概念也存在于其他语言中,例如C#。比较
throw e;
和throw;
(没有e
)如果使用
e
,Python和C#都将为异常分配一个新的堆栈跟踪。它将使用不带e
的原始stacktrace相关问题 更多 >
编程相关推荐