mirror of
https://github.com/python/cpython.git
synced 2025-11-06 21:11:04 +00:00
Issue #15209: Clarify exception chaining description
- not allowed when implicitly re-raised the current exception - last exception raised is always displayed last - attempt to make it clearer when/if cause and context are shown
This commit is contained in:
parent
c990f3b167
commit
8e18fc8c0b
2 changed files with 19 additions and 10 deletions
|
|
@ -39,17 +39,23 @@ When raising (or re-raising) an exception in an :keyword:`except` clause
|
||||||
new exception is not handled the traceback that is eventually displayed will
|
new exception is not handled the traceback that is eventually displayed will
|
||||||
include the originating exception(s) and the final exception.
|
include the originating exception(s) and the final exception.
|
||||||
|
|
||||||
This implicit exception chain can be made explicit by using :keyword:`from` with
|
When raising a new exception (rather than using to bare ``raise`` to re-raise
|
||||||
:keyword:`raise`. The single argument to :keyword:`from` must be an exception
|
the exception currently being handled), the implicit exception chain can be
|
||||||
or ``None``. It will be set as :attr:`__cause__` on the raised exception.
|
made explicit by using :keyword:`from` with :keyword:`raise`. The single
|
||||||
Setting :attr:`__cause__` implicitly sets the :attr:`__suppress_context__` to
|
argument to :keyword:`from` must be an exception or ``None``. It will be set
|
||||||
``True``. If :attr:`__cause__` is an exception, it will be displayed. If
|
as :attr:`__cause__` on the raised exception. Setting :attr:`__cause__`
|
||||||
:attr:`__cause__` is present or :attr:`__suppress_context__` has a true value,
|
also implicitly sets the :attr:`__suppress_context__` attribute to
|
||||||
:attr:`__context__` will not be displayed.
|
``True``.
|
||||||
|
|
||||||
In either case, the default exception handling code will not display any of the
|
The default traceback display code shows these chained exceptions in
|
||||||
remaining links in the :attr:`__context__` chain if :attr:`__cause__` has been
|
addition to the traceback for the exception itself. An explicitly chained
|
||||||
set.
|
exception in :attr:`__cause__` is always shown when present. An implicitly
|
||||||
|
chained exception in :attr:`__context__` is shown only if :attr:`__cause__`
|
||||||
|
is not set and :attr:`__suppress_context__` is false.
|
||||||
|
|
||||||
|
In either case, the exception itself is always shown after any chained
|
||||||
|
exceptions so that the final line of the traceback always shows the last
|
||||||
|
exception that was raised.
|
||||||
|
|
||||||
|
|
||||||
Base classes
|
Base classes
|
||||||
|
|
|
||||||
|
|
@ -322,6 +322,9 @@ Tools/Demos
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
- Issue #15209: Clarify exception chaining description in exceptions module
|
||||||
|
documentation
|
||||||
|
|
||||||
- Issue #15990: Improve argument/parameter documentation.
|
- Issue #15990: Improve argument/parameter documentation.
|
||||||
|
|
||||||
- Issue #16209: Move the documentation for the str built-in function to a new
|
- Issue #16209: Move the documentation for the str built-in function to a new
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue