[3.12] Docs: emphasise warning and add accurate markups for sys.unraisablehook (GH-108105) (#108109)

Docs: emphasise warning and add accurate markups for sys.unraisablehook (GH-108105)
(cherry picked from commit cc58ec9724)

Co-authored-by: Erlend E. Aasland <erlend@python.org>
This commit is contained in:
Miss Islington (bot) 2023-08-18 05:17:12 -07:00 committed by GitHub
parent 2b8e0207cb
commit af6e5fa718
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1811,35 +1811,39 @@ always available.
The *unraisable* argument has the following attributes:
* *exc_type*: Exception type.
* *exc_value*: Exception value, can be ``None``.
* *exc_traceback*: Exception traceback, can be ``None``.
* *err_msg*: Error message, can be ``None``.
* *object*: Object causing the exception, can be ``None``.
* :attr:`!exc_type`: Exception type.
* :attr:`!exc_value`: Exception value, can be ``None``.
* :attr:`!exc_traceback`: Exception traceback, can be ``None``.
* :attr:`!err_msg`: Error message, can be ``None``.
* :attr:`!object`: Object causing the exception, can be ``None``.
The default hook formats *err_msg* and *object* as:
The default hook formats :attr:`!err_msg` and :attr:`!object` as:
``f'{err_msg}: {object!r}'``; use "Exception ignored in" error message
if *err_msg* is ``None``.
if :attr:`!err_msg` is ``None``.
:func:`sys.unraisablehook` can be overridden to control how unraisable
exceptions are handled.
Storing *exc_value* using a custom hook can create a reference cycle. It
should be cleared explicitly to break the reference cycle when the
.. seealso::
:func:`excepthook` which handles uncaught exceptions.
.. warning::
Storing :attr:`!exc_value` using a custom hook can create a reference cycle.
It should be cleared explicitly to break the reference cycle when the
exception is no longer needed.
Storing *object* using a custom hook can resurrect it if it is set to an
object which is being finalized. Avoid storing *object* after the custom
Storing :attr:`!object` using a custom hook can resurrect it if it is set to an
object which is being finalized. Avoid storing :attr:`!object` after the custom
hook completes to avoid resurrecting objects.
See also :func:`excepthook` which handles uncaught exceptions.
.. audit-event:: sys.unraisablehook hook,unraisable sys.unraisablehook
Raise an auditing event ``sys.unraisablehook`` with arguments
``hook``, ``unraisable`` when an exception that cannot be handled occurs.
The ``unraisable`` object is the same as what will be passed to the hook.
If no hook has been set, ``hook`` may be ``None``.
*hook*, *unraisable* when an exception that cannot be handled occurs.
The *unraisable* object is the same as what will be passed to the hook.
If no hook has been set, *hook* may be ``None``.
.. versionadded:: 3.8