[Python-checkins] bpo-25381: Update explanation of exceptions in C. (GH-26838)

willingc webhook-mailer at python.org
Mon Nov 15 17:39:01 EST 2021


https://github.com/python/cpython/commit/ad43dc0b54994e7e7d06e3d4896ade188b36ee12
commit: ad43dc0b54994e7e7d06e3d4896ade188b36ee12
branch: main
author: Terry Jan Reedy <tjreedy at udel.edu>
committer: willingc <carolcode at willingconsulting.com>
date: 2021-11-15T14:38:53-08:00
summary:

bpo-25381: Update explanation of exceptions in C. (GH-26838)

* bpo-25381: Update explanation of exception globals

This paragraph in extending/extending.rst was unchanged (except for
NULL markup) since committed in 2007 Aug 15 for 2.6 alpha.

* Respond to reviews and remove duplication.

* Update Doc/extending/extending.rst

Co-authored-by: Serhiy Storchaka <storchaka at gmail.com>

Co-authored-by: Serhiy Storchaka <storchaka at gmail.com>

files:
A Misc/NEWS.d/next/Documentation/2021-06-21-17-51-51.bpo-25381.7Kn-_H.rst
M Doc/extending/extending.rst

diff --git a/Doc/extending/extending.rst b/Doc/extending/extending.rst
index 561d1c616cc10..2e3362b834e6f 100644
--- a/Doc/extending/extending.rst
+++ b/Doc/extending/extending.rst
@@ -127,13 +127,11 @@ Intermezzo: Errors and Exceptions
 
 An important convention throughout the Python interpreter is the following: when
 a function fails, it should set an exception condition and return an error value
-(usually a ``NULL`` pointer).  Exceptions are stored in a static global variable
-inside the interpreter; if this variable is ``NULL`` no exception has occurred.  A
-second global variable stores the "associated value" of the exception (the
-second argument to :keyword:`raise`).  A third variable contains the stack
-traceback in case the error originated in Python code.  These three variables
-are the C equivalents of the result in Python of :meth:`sys.exc_info` (see the
-section on module :mod:`sys` in the Python Library Reference).  It is important
+(usually ``-1`` or a ``NULL`` pointer).  Exception information is stored in
+three members of the interpreter's thread state.  These are ``NULL`` if
+there is no exception.  Otherwise they are the C equivalents of the members
+of the Python tuple returned by :meth:`sys.exc_info`.  These are the
+exception type, exception instance, and a traceback object.  It is important
 to know about them to understand how errors are passed around.
 
 The Python API defines a number of functions to set various types of exceptions.
diff --git a/Misc/NEWS.d/next/Documentation/2021-06-21-17-51-51.bpo-25381.7Kn-_H.rst b/Misc/NEWS.d/next/Documentation/2021-06-21-17-51-51.bpo-25381.7Kn-_H.rst
new file mode 100644
index 0000000000000..f009f880e917d
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2021-06-21-17-51-51.bpo-25381.7Kn-_H.rst
@@ -0,0 +1,2 @@
+In the extending chapter of the extending doc, update a paragraph about the
+global variables containing exception information.



More information about the Python-checkins mailing list