"Exception ... in <generator object ...> ignored" Messages

Peter Otten __peter__ at web.de
Thu Feb 14 09:00:58 CET 2013


Ami Tavory wrote:

>   Hi,
> 
>   Running the unit tests for some generator code, prints, as a side
>   effect,
> numerous messages of the form:
> 
> ...
> Exception NameError: "global name 'l' is not defined" in <generator object
> _dagpype_internal_fn_act at 0x9d4c500> ignored
> Exception AttributeError: "'NoneType' object has no attribute 'close'" in
> <generator object split at 0x7601640> ignored
> Exception AttributeError: "'NoneType' object has no attribute 'close'" in
> <generator object split at 0x7601690> ignored
> ...
> 
> The tests otherwise run fine.
> 
>   Is there any way to catch the point where such a message originates, and
> print a traceback? I find it difficult to debug otherwise. I've tried
> running Python with -W error, catching warnings with context managers, and
> so forth, but without any success.

>>> def g():
...     try:
...             yield 42
...     finally:
...             1/0
... 
>>> for item in g():
...     break
... 
Exception ZeroDivisionError: 'integer division or modulo by zero' in 
<generator object g at 0x7f990243b0f0> ignored

Can you exhaust the generator?

>>> for item in g():
...     pass
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in g
ZeroDivisionError: integer division or modulo by zero

Explicitly closing the generator seems to work, too:

>>> x = g()
>>> next(x)
42
>>> x.close()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 5, in g
ZeroDivisionError: integer division or modulo by zero





More information about the Python-list mailing list