| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # Test proper handling of exceptions within generator across yield
- def gen():
- try:
- yield 1
- raise ValueError
- except ValueError:
- print("Caught")
- yield 2
- for i in gen():
- print(i)
- # Test throwing exceptions out of generator
- def gen2():
- yield 1
- raise ValueError
- yield 2
- yield 3
- g = gen2()
- print(next(g))
- try:
- print(next(g))
- except ValueError:
- print("ValueError")
- try:
- print(next(g))
- except StopIteration:
- print("StopIteration")
- # Test throwing exception into generator
- def gen3():
- yield 1
- try:
- yield 2
- except ValueError:
- print("ValueError received")
- yield 3
- yield 4
- yield 5
- g = gen3()
- print(next(g))
- print(next(g))
- print("out of throw:", g.throw(ValueError))
- print(next(g))
- try:
- print("out of throw2:", g.throw(ValueError))
- except ValueError:
- print("Boomerang ValueError caught")
|