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