Ethan Furman <et...@stoneleaf.us> added the comment:

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

----------
Added file: http://bugs.python.org/file24354/raise_from_none_v2.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue6210>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to