如果引发异常,如何防止 try 块中代码执行的后果?

问题描述 投票:0回答:1

如果它引发任何类型的

try
,我想阻止在
Exception
块上执行。示例:

a = 1
try:
    a += 1
    raise ValueError
except:
    pass
print(a)

之后

a
将等于 2。我希望它保持为 1。在这种特殊情况下,我可以将
a -=1
添加到
except
块中,但这不是更复杂的东西的解决方案。有没有办法可以顺利完成?

python exception try-catch
1个回答
0
投票

您有多个抽象案例:

  • 提升代码独立于环境修改代码。在这种情况下,先检查,然后再更改,所以如果失败,则环境尚未更改。
  • 环境变化取决于可能引发的代码。为了安全地做到这一点,您应该暂时保存这些更改,并且一旦每个步骤都经过验证(try 块结束),就应用它们。这样,如果发生任何不好的事情,您还没有应用环境修改,并且它保持不变(或者您甚至可以选择部分应用它们)。
  • 提升代码实际上会改变环境。如果这是您的代码,您有责任使错误将环境恢复到发生之前的状态。如果它是远程代码,则其维护者有责任不更改系统状态并产生错误,这将是您的 pov 中未定义的行为。

我目前能想到的就是这些情况。

© www.soinside.com 2019 - 2024. All rights reserved.