编程语言
首页 > 编程语言> > 使用finally子句的try块中不允许使用python 2.4的产生方法

使用finally子句的try块中不允许使用python 2.4的产生方法

作者:互联网

我坚持使用python2.4,所以我不能使用带有生成器或yield的finally子句.有什么方法可以解决这个问题吗?

我在python 2.4中找不到如何解决这个限制的任何提及,我不是我想到的解决方法的主要粉丝(主要涉及__del__并试图确保它在合理的时间内运行)不是很吸引人.

解决方法:

您可以复制代码以避免finally块:

try:
  yield 42
finally:
  do_something()

变为:

try:
  yield 42
except:  # bare except, catches *anything*
  do_something()
  raise  # re-raise same exception
do_something()

(我没有在Python 2.4上尝试过这个,你可能需要查看sys.exc_info而不是上面的re-raise语句,如raise sys.exc_info [0],sys.exc_info [1],sys.exc_info [2] .)

标签:python-2-4,try-finally,python,yield
来源: https://codeday.me/bug/20190726/1546726.html