【发布时间】:2021-11-14 04:09:55
【问题描述】:
我需要更新对象的一个属性以进行单次验证。在任何情况下,我都需要在验证引发错误之前恢复它。
如果这实际上是在引发异常之前还原某些内容的最漂亮方法,我目前感到困惑,因为那时我必须复制还原代码。
finally 在这里不起作用,因为它在 raise 语句之后执行。
amount = instance.amount
instance.amount = 0
try:
validate_instance(instance)
except Exception:
instance.amount = amount
raise
else:
instance.amount = amount
【问题讨论】:
-
在您的代码块中,您的意思是始终将其恢复为旧值
amount,无论是否有异常?因为它存在于except和else。 -
executed after the raise statement是什么意思?在我对try:except:finally:的实验中,finally在raise使控制离开当前功能之前执行。
标签: python python-3.x pep8 code-duplication