2014-03-26 17:27:52 +00:00
|
|
|
def gen():
|
|
|
|
try:
|
|
|
|
yield 1
|
2019-02-21 03:07:44 +00:00
|
|
|
except ValueError as e:
|
|
|
|
print("got ValueError from upstream!", repr(e.args))
|
2014-03-26 17:27:52 +00:00
|
|
|
yield "str1"
|
|
|
|
raise TypeError
|
|
|
|
|
|
|
|
def gen2():
|
|
|
|
print((yield from gen()))
|
|
|
|
|
|
|
|
g = gen2()
|
|
|
|
print(next(g))
|
|
|
|
print(g.throw(ValueError))
|
|
|
|
try:
|
|
|
|
print(next(g))
|
|
|
|
except TypeError:
|
|
|
|
print("got TypeError from downstream!")
|
2019-02-21 03:07:44 +00:00
|
|
|
|
|
|
|
# passing None as second argument to throw
|
|
|
|
g = gen2()
|
|
|
|
print(next(g))
|
|
|
|
print(g.throw(ValueError, None))
|
|
|
|
try:
|
|
|
|
print(next(g))
|
|
|
|
except TypeError:
|
|
|
|
print("got TypeError from downstream!")
|
|
|
|
|
|
|
|
# passing an exception instance as second argument to throw
|
|
|
|
g = gen2()
|
|
|
|
print(next(g))
|
|
|
|
print(g.throw(ValueError, ValueError(123)))
|
|
|
|
try:
|
|
|
|
print(next(g))
|
|
|
|
except TypeError:
|
|
|
|
print("got TypeError from downstream!")
|
2019-10-04 13:58:43 +01:00
|
|
|
|
|
|
|
# thrown value is caught and then generator returns normally
|
|
|
|
def gen():
|
|
|
|
try:
|
|
|
|
yield 123
|
|
|
|
except ValueError:
|
|
|
|
print('ValueError')
|
|
|
|
# return normally after catching thrown exception
|
|
|
|
def gen2():
|
|
|
|
yield from gen()
|
|
|
|
yield 789
|
|
|
|
g = gen2()
|
|
|
|
print(next(g))
|
|
|
|
print(g.throw(ValueError))
|