【发布时间】:2014-09-17 18:25:09
【问题描述】:
我的 python 代码看起来像这样 -
try:
statement1
statement2
statement3
except Exception:
handleException
问题是,如果 statement3 产生异常,statement1 和 statement2 的影响已经发生,我无法在except 部分撤消它们。有没有一种简单的方法来编写类似的东西 -
check if the following block runs without exceptions:
statement1
statement2
statement3
if yes:
run entire block
if no:
handleException
(基本上类似于 Python 代码的事务原子性)。
【问题讨论】:
-
一般来说,没有。如果 statement1 的作用是将数据发送到在线服务器怎么办?没有办法“撤消”它。一般来说,许多可能完成的事情是不可撤销的,或者是不可撤销的。如何回滚一个动作完全取决于那个动作是什么。
-
事务管理不简单;没有标准的 Python 结构可以为您做到这一点。
-
您希望不打印
print语句?要取消删除的文件? -
“不要赌博,把你所有的积蓄都拿出来买一些好股票,等它涨了再卖。如果它不涨,就不要买。 " - 威尔罗杰斯
-
我不认为 statement1/2/3 是特别复杂的语句。在阅读了 BrenBarn 的评论后,我意识到我刚刚要求的内容并非易事。
标签: python exception exception-handling atomic contextmanager