@@ -402,58 +402,45 @@ Querying the error indicator
402402
403403.. c:function:: PyObject *PyErr_GetRaisedException(void)
404404
405- Returns the exception currently being raised, clearing the exception at
406- the same time. Do not confuse this with the exception currently being
407- handled which can be accessed with :c:func:`PyErr_GetHandledException`.
405+ Return the exception currently being raised, clearing the error indicator at
406+ the same time.
408407
409- .. note::
408+ This function is used by code that needs to catch exceptions,
409+ or code that needs to save and restore the error indicator temporarily.
410410
411- This function is normally only used by code that needs to catch exceptions or
412- by code that needs to save and restore the error indicator temporarily, e.g.::
411+ For example::
413412
414- {
415- PyObject *exc = PyErr_GetRaisedException();
413+ {
414+ PyObject *exc = PyErr_GetRaisedException();
416415
417- /* ... code that might produce other errors ... */
416+ /* ... code that might produce other errors ... */
418417
419- PyErr_SetRaisedException (exc);
420- }
418+ PyErr_SetRaisedException (exc);
419+ }
420+
421+ .. seealso :: :c:func:`PyErr_GetHandledException`,
422+ to save the exception currently being handled.
421423
422424 .. versionadded :: 3.12
423425
424426
425427.. c :function :: void PyErr_SetRaisedException (PyObject *exc)
426428
427- Sets the exception currently being raised ``exc ``.
428- If the exception is already set, it is cleared first.
429-
430- ``exc `` must be a valid exception.
431- (Violating this rules will cause subtle problems later.)
432- This call consumes a reference to the ``exc`` object: you must own a
433- reference to that object before the call and after the call you no longer own
434- that reference.
435- (If you don't understand this, don't use this function. I warned you.)
429+ Set *exc * as the exception currently being raised,
430+ clearing the existing exception if one is set.
436431
437- .. note ::
432+ .. warning ::
438433
439- This function is normally only used by code that needs to save and restore the
440- error indicator temporarily. Use :c:func:`PyErr_GetRaisedException` to save
441- the current exception, e.g.::
442-
443- {
444- PyObject *exc = PyErr_GetRaisedException();
445-
446- /* ... code that might produce other errors ... */
447-
448- PyErr_SetRaisedException (exc);
449- }
434+ This call steals a reference to *exc *, which must be a valid exception.
450435
451436 .. versionadded :: 3.12
452437
453438
454439.. c :function :: void PyErr_Fetch (PyObject **ptype, PyObject **pvalue, PyObject **ptraceback)
455440
456- As of 3.12, this function is deprecated. Use :c:func: `PyErr_GetRaisedException ` instead.
441+ .. deprecated :: 3.12
442+
443+ Use :c:func: `PyErr_GetRaisedException ` instead.
457444
458445 Retrieve the error indicator into three variables whose addresses are passed.
459446 If the error indicator is not set, set all three variables to ``NULL ``. If it is
@@ -462,8 +449,10 @@ Querying the error indicator
462449
463450 .. note ::
464451
465- This function is normally only used by code that needs to catch exceptions or
466- by code that needs to save and restore the error indicator temporarily, e.g.::
452+ This function is normally only used by legacy code that needs to catch
453+ exceptions or save and restore the error indicator temporarily.
454+
455+ For example::
467456
468457 {
469458 PyObject *type, *value, *traceback;
@@ -474,15 +463,17 @@ Querying the error indicator
474463 PyErr_Restore(type, value, traceback);
475464 }
476465
477- .. deprecated :: 3.12
478-
479466
480467.. c :function :: void PyErr_Restore (PyObject *type, PyObject *value, PyObject *traceback)
481468
482- As of 3.12, this function is deprecated. Use :c:func: `PyErr_SetRaisedException ` instead.
469+ .. deprecated :: 3.12
470+
471+ Use :c:func: `PyErr_SetRaisedException ` instead.
483472
484- Set the error indicator from the three objects. If the error indicator is
485- already set, it is cleared first. If the objects are ``NULL ``, the error
473+ Set the error indicator from the three objects,
474+ *type *, *value *, and *traceback *,
475+ clearing the existing exception if one is set.
476+ If the objects are ``NULL ``, the error
486477 indicator is cleared. Do not pass a ``NULL `` type and non-``NULL `` value or
487478 traceback. The exception type should be a class. Do not pass an invalid
488479 exception type or value. (Violating these rules will cause subtle problems
@@ -493,18 +484,17 @@ Querying the error indicator
493484
494485 .. note::
495486
496- This function is normally only used by code that needs to save and restore the
497- error indicator temporarily. Use :c:func:`PyErr_Fetch` to save the current
498- error indicator.
499-
500- .. deprecated:: 3.12
487+ This function is normally only used by legacy code that needs to
488+ save and restore the error indicator temporarily.
489+ Use :c:func:`PyErr_Fetch` to save the current error indicator.
501490
502491
503492.. c:function:: void PyErr_NormalizeException(PyObject **exc, PyObject **val, PyObject **tb)
504493
505- As of 3.12, this function is deprecated.
506- Use :c:func: `PyErr_GetRaisedException ` instead of :c:func: `PyErr_Fetch ` to avoid
507- any possible de-normalization.
494+ .. deprecated :: 3.12
495+
496+ Use :c:func: `PyErr_GetRaisedException ` instead,
497+ to avoid any possible de-normalization.
508498
509499 Under certain circumstances, the values returned by :c:func: `PyErr_Fetch ` below
510500 can be "unnormalized", meaning that ``*exc `` is a class object but ``*val `` is
@@ -522,8 +512,6 @@ Querying the error indicator
522512 PyException_SetTraceback(val, tb);
523513 }
524514
525- .. deprecated :: 3.12
526-
527515
528516.. c :function :: PyObject* PyErr_GetHandledException (void)
529517
@@ -771,14 +759,12 @@ Exception Objects
771759
772760.. c :function :: PyObject* PyException_GetArgs (PyObject *ex)
773761
774- Return args of the given exception as a new reference,
775- as accessible from Python through :attr: `args `.
762+ Return :attr: `~BaseException.args ` of exception *ex *.
776763
777764
778765.. c :function :: void PyException_SetArgs (PyObject *ex, PyObject *args)
779766
780- Set the args of the given exception,
781- as accessible from Python through :attr: `args `.
767+ Set :attr: `~BaseException.args ` of exception *ex * to *args *.
782768
783769
784770.. _unicodeexceptions :
0 commit comments