Python 报告,比方说,KeyError
只有丢失的键,而不是找不到键的字典。
我想在我的代码中“修复”这个问题:
d = {1:"2"}
try:
d[5]
except Exception as e:
raise type(e)(*(e.args+(d,)))
----> 5 raise type(e)(*e.args+(d,))
KeyError: (5, {1: '2'})
唉,堆栈指向错误的行。
第二次尝试:
d = {1:"2"}
try:
d[5]
except Exception as e:
e.args += (d,)
raise e
----> 3 d[5]
KeyError: (5, {1: '2'})
这里的栈是正确的。
这是正确的做法吗?还有更好的方法吗?
最佳答案
是的,您做了“正确的事”:适本地将信息添加到异常变量,然后重新引发异常。
您的第一次尝试创建了一个相同类型的新异常,这就是堆栈指针移动的原因。
关于python - 如何使用附加信息重新引发异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149208/