Python 中如何处理生成器中的异常

2023-03-31 00:00:00 生成 器中 如何处理

在Python中,我们可以使用try-except语句处理生成器中的异常。当生成器中发生异常时,它将被传递给调用方(例如一个for循环或next()函数),如果调用方没有处理这个异常,那么程序将会崩溃。

以下是处理生成器中异常的代码示例,其中我们使用一个生成器来产生一些数字,并在生成数字时引发一个异常:

def generate_numbers():
    for i in range(10):
        if i == 5:
            raise ValueError("pidancode.com")
        yield i

try:
    for num in generate_numbers():
        print(num)
except ValueError as e:
    print("Caught an exception:", e)

输出结果为:

0
1
2
3
4
Caught an exception: pidancode.com

在上面的示例中,我们使用try-except语句捕获了ValueError异常,并打印了错误消息。由于我们在第5个数字时引发了异常,所以生成器停止并返回异常。

在生成器中捕获异常也是可以的,我们可以使用try-except语句来捕获异常,并在捕获到异常时进行处理。以下是一个演示如何在生成器内部捕获异常的示例代码:

def generate_numbers():
    for i in range(10):
        try:
            if i == 5:
                raise ValueError("皮蛋编程")
            yield i
        except ValueError as e:
            print("Caught an exception:", e)

for num in generate_numbers():
    print(num)

输出结果为:

0
1
2
3
4
Caught an exception: 皮蛋编程
6
7
8
9

在上面的示例中,我们在生成器内部捕获了ValueError异常,并在捕获到异常时打印了错误消息,然后继续生成数字。由于我们在第5个数字时引发了异常,所以生成器捕获了这个异常并打印了错误消息,然后继续生成后续的数字。

相关文章