下面是代码:
def g():
try:
yield 1
yield 2
yield 3
except GeneratorExit:
yield 4
gen = g()
print(gen.__next__())
如果你运行它,你会看到:
1
Exception ignored in: <generator object g at 0x00000216BB546A98>
RuntimeError: generator ignored GeneratorExit
我知道发生了什么,但我找不到这个警告是什么类型的信息.
看起来不是logging
警告(我无法删除它设置日志(log)级别).这也不是warnings
警告(它看起来不像我们打warnings.warn
时得到的).
我以为它可以与异常关联,但我不能用sys.excepthook
捕捉它,而msg本身消失了:
import sys
def hook(exc_type, exc_val, tb):
print(exc_type, exc_val, tb) # Nothing prints, while msg disappear
sys.excepthook = hook
我怎样才能抓住这个警告?
如何手动创建此类警告?