summaryrefslogtreecommitdiff
path: root/tests/basics/gen_yield_from_throw3.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/gen_yield_from_throw3.py')
-rw-r--r--tests/basics/gen_yield_from_throw3.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/basics/gen_yield_from_throw3.py b/tests/basics/gen_yield_from_throw3.py
index 0f6c7c842..85b6f71f9 100644
--- a/tests/basics/gen_yield_from_throw3.py
+++ b/tests/basics/gen_yield_from_throw3.py
@@ -28,3 +28,30 @@ print(g.throw(123))
g = gen()
print(next(g))
print(g.throw(ZeroDivisionError))
+
+# this user-defined generator doesn't have a throw() method
+class Iter2:
+ def __iter__(self):
+ return self
+
+ def __next__(self):
+ return 1
+
+def gen2():
+ yield from Iter2()
+
+# the thrown ValueError is not intercepted by the user class
+g = gen2()
+print(next(g))
+try:
+ g.throw(ValueError)
+except:
+ print('ValueError')
+
+# the thrown 123 is not an exception so raises a TypeError
+g = gen2()
+print(next(g))
+try:
+ g.throw(123)
+except TypeError:
+ print('TypeError')