Message152213
It looks like agreement is forming around the
raise ... from None
method. It has been mentioned more than once that having the context saved on the exception would be a Good Thing, and for further debugging (or logging or what-have-you) I must agree.
The patch attached now sets __cause__ to True, leaving __context__ unclobbered. The exception printing routine checks to see if __cause__ is True, and if so simply skips the display of either cause or __context__, but __context__ can still be queried by later code.
One concern raised was that since it is possible to write (even before this patch)
raise KeyError from NameError
outside of a try block that some would get into the habit of writing
raise KeyError from None
as a way of preemptively suppressing implicit context chaining; I am happy to report that this is not an issue, since when that exception is caught and a new exception raised, it is the new exception that controls the display.
In other words:
>>> try:
... raise ValueError from None
... except:
... raise NameError
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
NameError |
|
Date |
User |
Action |
Args |
2012-01-29 07:37:27 | ethan.furman | set | recipients:
+ ethan.furman, rhettinger, ncoghlan, pitrou, draghuram, aronacher, ezio.melotti, eric.araujo, mrabarnett, steven.daprano, poke, catalin.iacob |
2012-01-29 07:37:27 | ethan.furman | set | messageid: <1327822647.05.0.686082736493.issue6210@psf.upfronthosting.co.za> |
2012-01-29 07:37:26 | ethan.furman | link | issue6210 messages |
2012-01-29 07:37:25 | ethan.furman | create | |
|