Skip to content

Commit

Permalink
gh-101578: Fixup NEWS and add What's New entry for new exception APIs (
Browse files Browse the repository at this point in the history
  • Loading branch information
erlend-aasland authored Feb 23, 2023
1 parent 22b8d77 commit 5b9573e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 11 deletions.
18 changes: 18 additions & 0 deletions Doc/whatsnew/3.12.rst
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,19 @@ New Features
get a frame variable by its name.
(Contributed by Victor Stinner in :gh:`91248`.)

* Add :c:func:`PyErr_GetRaisedException` and :c:func:`PyErr_SetRaisedException`
for saving and restoring the current exception.
These functions return and accept a single exception object,
rather than the triple arguments of the now-deprecated
:c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore`.
This is less error prone and a bit more efficient.
(Contributed by Mark Shannon in :gh:`101578`.)

* Add :c:func:`PyException_GetArgs` and :c:func:`PyException_SetArgs`
as convenience functions for retrieving and modifying
the :attr:`~BaseException.args` passed to the exception's constructor.
(Contributed by Mark Shannon in :gh:`101578`.)

Porting to Python 3.12
----------------------

Expand Down Expand Up @@ -993,6 +1006,11 @@ Deprecated
(Contributed in :gh:`47146` by Petr Viktorin, based on
earlier work by Alexander Belopolsky and Matthias Braun.)

* :c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore` are deprecated.
Use :c:func:`PyErr_GetRaisedException` and
:c:func:`PyErr_SetRaisedException` instead.
(Contributed by Mark Shannon in :gh:`101578`.)


Removed
-------
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
Add new C-API functions for saving and restoring the current exception:
``PyErr_GetRaisedException`` and ``PyErr_SetRaisedException``.
These functions take and return a single exception rather than
the triple of ``PyErr_Fetch`` and ``PyErr_Restore``.
Add :c:func:`PyErr_GetRaisedException` and :c:func:`PyErr_SetRaisedException`
for saving and restoring the current exception.
These functions return and accept a single exception object,
rather than the triple arguments of the now-deprecated
:c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore`.
This is less error prone and a bit more efficient.

The three arguments forms of saving and restoring the
current exception: ``PyErr_Fetch`` and ``PyErr_Restore``
are deprecated.

Also add ``PyException_GetArgs`` and ``PyException_SetArgs``
as convenience functions to help dealing with
exceptions in the C API.
Add :c:func:`PyException_GetArgs` and :c:func:`PyException_SetArgs`
as convenience functions for retrieving and modifying
the :attr:`~BaseException.args` passed to the exception's constructor.

0 comments on commit 5b9573e

Please sign in to comment.