Ethan Furman added the comment:

There is one typo and one error in the first paragraph of the patch:

> When raising a new exception (rather than
> using to bare ``raise`` to re-raise the
         ^ should be an 'a'

> exception currently being handled), the
> implicit exception chain can be made explicit
> by using :keyword:`from` with :keyword:`raise`.
> The single argument to :keyword:`from` must be
> an exception or ``None``. It will be set as
> :attr:`__cause__` on the raised exception.

> Setting :attr:`__cause__` also implicitly sets
> the :attr:`__suppress_context__` attribute to ``True``.

The last sentence is incorrect -- __suppress_context__ is only set to True if 
__cause__ is set to None; if __cause__ is set to any other exception 
__suppress_context__ remains False and the new exception chain will be printed:

>>> try:
...   raise ValueError
... except:
...   raise NameError from KeyError
...
KeyError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
NameError

This is easily fixed by adding 'to ``None``':

> Setting :attr:`__cause__` to ``None`` also implicitly sets
> the :attr:`__suppress_context__` attribute to ``True``.

----------

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

Reply via email to