面试题答案
一键面试- 处理思路:
- 在内层生成器中,异常可以直接抛出。
- 外层生成器通过
try - except
语句块来捕获内层生成器抛出的异常。 - 捕获异常后,根据业务需求进行处理,然后可以继续生成器函数链的执行逻辑,例如通过
yield
返回值或者继续迭代生成器。
- 代码实现:
def inner_generator():
yield 1
raise ValueError("Inner generator error")
yield 2
def outer_generator():
try:
yield from inner_generator()
except ValueError as e:
print(f"Caught exception in outer generator: {e}")
# 这里可以进行一些异常处理逻辑
yield "Handled exception, continue execution"
# 使用生成器
gen = outer_generator()
for value in gen:
print(value)
这段代码中,inner_generator
抛出ValueError
异常,outer_generator
通过try - except
捕获该异常并进行处理,然后继续生成器的执行逻辑,通过yield
返回一个值,使得生成器函数链的执行不受太大影响。