非同期IOコルーチンの詳細なクローズ、スロー

コルーチンの基本が学習され、他のいくつかの機能が学習されました。ジェネレーターを停止した後の次の例外は、StopIterationで、GenertorExitを介して例外情報を受信するのに近く、BaseExceptionsに基づいています。

def gen_func():
    try:
        yield "https://www.baidu.com"
    except GeneratorExit: # 基于BaseExceptions
        pass # 如果这个协程raise Stopiteration的话也不会抛出异常
    yield 2 # 如果下面没有的话,close是不会抛异常的
    yield 3
    return "caicai"

if __name__ =="__main__":
    gen = gen_func()
    print(next(gen))
    gen.close()# 停止这个生成器
    print(123)
    next(gen)

詳細に行き、例外情報をカスタマイズします。例外を追加すると、次の収量が占有されます


def gen_func():
    try:
        yield "https://www.baidu.com"
    except Exception: # pass 异常
        pass
    yield 2
    try:
        yield 3
    except Exception as e:
        pass
    yield 3
    yield 2
    return "caicai"

if __name__ =="__main__":
    gen = gen_func()
    print(next(gen))
    gen.throw(Exception,"this is error")# 给上一个添加异常 ,第二个yeild会被占用
    print(next(gen))
    gen.throw(Exception,"this is error")# 给上一个添加异常,并且下一个yeild会被占用
    print(next(gen))

 

公開された89元の記事 ウォンの賞賛2 ビュー2803

おすすめ

転載: blog.csdn.net/qq_37463791/article/details/105481264