Suppressing __context__

Martin v. Loewis martin at v.loewis.de
Fri Oct 29 16:31:17 CEST 2010


> It is not easily discoverable, but it is possible to suppress
> __context__ by using a bare re-raise afterwards:

I see. I'd wrap this like this:

def raise_no_context(e):
    try:
        raise e
    except:
        e.__context__=None
        raise

d = {}
try:
    val = d['nosuch']
except KeyError:
    raise_no_context(AttributeError("No attribute 'nosuch'"))

The downside of this is that the innermost frame will be
raise_no_context, but I suppose that's ok because even the
next-inner frame already reveals implementation details that
developers have learned to ignore.

Regards,
Martin



More information about the Python-list mailing list