0
在查看python 3.5的新功能时,我发现PEP 0479。在它的基本原理中,它提供了一个使用@ contextlib.contextmanager的例子。我看着这个装饰的来源,发现其出口方法传来的例外在它的发电机被抛出:为什么@ contextmanager的__exit__句柄在异常中传递?
self.gen.throw(type, value, traceback)
我不知道为什么在与块引发的异常应在此发电机内部传递。我认为正确的方法是关闭生成器并让异常传播。
这是合理的。但我仍然认为PEP0479在发电机内改变StopIteration为RuntimeError的方式有点奇怪。我想我最好更多地学习编程语言设计。 –