gpt4 book ai didi

python-2.7 - 如何在 Python 2 中模仿 Python 3 的加薪...?

转载 作者:行者123 更新时间:2023-12-03 10:59:00 26 4
gpt4 key购买 nike

Python 3 具有整洁的

try:
raise OneException('sorry')
except OneException as e:
# after a failed attempt of mitigation:
raise AnotherException('I give up') from e

允许在不丢失上下文的情况下引发后续异常的语法。我能在 Python 2 中想到的最好的类比是
raise AnotherException((e,'I give up')), None, sys.exc_info()[2]

哪里 (e,'')将原始异常的名称包含在消息中是一种丑陋的技巧。但是没有更好的方法吗?

最佳答案

有一个 raise_from python-future ;只需安装它

pip install future

并导入使用
from future.utils import raise_from
# or: from six import raise_from

class FileDatabase:
def __init__(self, filename):
try:
self.file = open(filename)
except IOError as exc:
raise_from(DatabaseError('failed to open'), exc)

更新

兼容包 six还支持 raise_from ,从 1.9 版(2015 年发布)开始。它的使用方式与上述相同。

关于python-2.7 - 如何在 Python 2 中模仿 Python 3 的加薪...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com