micropython/tests/basics/generator_throw_nested.py

34 lines
734 B
Python

# Tests that the correct nested exception handler is used when
# throwing into a generator (previously failed on native emitter).
def gen():
try:
yield 1
try:
yield 2
try:
yield 3
except Exception:
yield 4
print(0)
yield 5
except Exception:
yield 6
print(1)
yield 7
except Exception:
yield 8
print(2)
yield 9
for i in range(1, 10):
g = gen()
try:
for _ in range(i):
print(next(g))
print(g.throw(ValueError))
except ValueError:
print('ValueError')
except StopIteration:
print('StopIteration')