]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-101578: Amend PyErr_{Set,Get}RaisedException docs (#101962)
authorErlend E. Aasland <erlend.aasland@protonmail.com>
Sun, 19 Feb 2023 20:22:29 +0000 (21:22 +0100)
committerGitHub <noreply@github.com>
Sun, 19 Feb 2023 20:22:29 +0000 (21:22 +0100)
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
Doc/c-api/exceptions.rst
Doc/data/refcounts.dat

index de9b15edd6859a31f4a627cf2911a5a31f49d6b6..e735f8db4023639f93b8451214f52f8838b6ecb8 100644 (file)
@@ -402,51 +402,36 @@ Querying the error indicator
 
 .. c:function:: PyObject *PyErr_GetRaisedException(void)
 
-   Returns the exception currently being raised, clearing the exception at
-   the same time. Do not confuse this with the exception currently being
-   handled which can be accessed with  :c:func:`PyErr_GetHandledException`.
+   Return the exception currently being raised, clearing the error indicator at
+   the same time.
 
-   .. note::
+   This function is used by code that needs to catch exceptions,
+   or code that needs to save and restore the error indicator temporarily.
 
-      This function is normally only used by code that needs to catch exceptions or
-      by code that needs to save and restore the error indicator temporarily, e.g.::
+   For example::
 
-         {
-            PyObject *exc = PyErr_GetRaisedException();
+      {
+         PyObject *exc = PyErr_GetRaisedException();
 
-            /* ... code that might produce other errors ... */
+         /* ... code that might produce other errors ... */
 
-            PyErr_SetRaisedException(exc);
-         }
+         PyErr_SetRaisedException(exc);
+      }
+
+   .. seealso:: :c:func:`PyErr_GetHandledException`,
+                to save the exception currently being handled.
 
    .. versionadded:: 3.12
 
 
 .. c:function:: void PyErr_SetRaisedException(PyObject *exc)
 
-   Sets the exception currently being raised ``exc``.
-   If the exception is already set, it is cleared first.
-
-   ``exc`` must be a valid exception.
-   (Violating this rules will cause subtle problems later.)
-   This call consumes a reference to the ``exc`` object: you must own a
-   reference to that object before the call and after the call you no longer own
-   that reference.
-   (If you don't understand this, don't use this function. I warned you.)
+   Set *exc* as the exception currently being raised,
+   clearing the existing exception if one is set.
 
-   .. note::
-
-      This function is normally only used by code that needs to save and restore the
-      error indicator temporarily.  Use :c:func:`PyErr_GetRaisedException` to save
-      the current exception, e.g.::
-
-         {
-            PyObject *exc = PyErr_GetRaisedException();
-
-            /* ... code that might produce other errors ... */
+   .. warning::
 
-            PyErr_SetRaisedException(exc);
-         }
+      This call steals a reference to *exc*, which must be a valid exception.
 
    .. versionadded:: 3.12
 
index 349c4dd5be3d8119977bf8dccb774a077cf7c96f..ed2958f8cd2205ab4937a5462bbf6346714e429e 100644 (file)
@@ -606,6 +606,9 @@ PyErr_GetExcInfo:PyObject**:ptype:+1:
 PyErr_GetExcInfo:PyObject**:pvalue:+1:
 PyErr_GetExcInfo:PyObject**:ptraceback:+1:
 
+PyErr_GetRaisedException:PyObject*::+1:
+PyErr_SetRaisedException::::
+
 PyErr_GivenExceptionMatches:int:::
 PyErr_GivenExceptionMatches:PyObject*:given:0:
 PyErr_GivenExceptionMatches:PyObject*:exc:0: