mirror of https://github.com/python/cpython
More extensive comment on __exit__ handling, per Guido's request.
This commit is contained in:
parent
e33901eb2b
commit
ccc7bb4ef2
|
@ -34,6 +34,13 @@ class GeneratorContextManager(object):
|
|||
except StopIteration:
|
||||
return True
|
||||
except:
|
||||
# only re-raise if it's *not* the exception that was
|
||||
# passed to throw(), because __exit__() must not raise
|
||||
# an exception unless __exit__() itself failed. But throw()
|
||||
# has to raise the exception to signal propagation, so this
|
||||
# fixes the impedance mismatch between the throw() protocol
|
||||
# and the __exit__() protocol.
|
||||
#
|
||||
if sys.exc_info()[1] is not value:
|
||||
raise
|
||||
|
||||
|
|
Loading…
Reference in New Issue