python - 如何使用附加信息重新引发异常?

标签 python python-3.x exception

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/

相关文章:

python - 在 matplotlib 中合并颜色图

python - 在python中打印takewhile之前和之后的字符

java - 在 Spring Boot 应用程序中防止自定义异常的堆栈跟踪日志记录

.net - 使自定义 .NET 异常可序列化的正确方法是什么?

exception - 可扩展的 "SomeException"如何符合 Haskell 标准?

python - 如何连接两个Python程序?

python - Slim Docker 镜像包含 git 存储库

python - 使用 python 压缩所有子目录

python - 从 txt 文件导入到列表

python-3.x - 确定 Pandas 数组中的唯一用法