mardi 5 juillet 2016

What type of message "Exception ignored in" is?


Here's code:

def g():
    try:
        yield 1
        yield 2
        yield 3
    except GeneratorExit:
        yield 4

gen = g()
print(gen.__next__())

If you run it you'll see:

1
Exception ignored in: <generator object g at 0x00000216BB546A98>
RuntimeError: generator ignored GeneratorExit

I understand what happened, but I can't find what type of message this warning is.

Looks like it's not logging warning (I can't remove it setting logging level). It's also not warnings warning (It doesn't look like what we get when call warnings.warn).

I thought it can be associated with exception, but I can't catch it with sys.excepthook, while msg itself disappears:

import sys

def hook(exc_type, exc_val, tb):
    print(exc_type, exc_val, tb)  # Nothing prints, while msg disappear

sys.excepthook = hook

How can I catch this warning?

How can I manually create this type of warning?


Aucun commentaire:

Enregistrer un commentaire