@@ -1244,8 +1244,9 @@ Frame objects
12441244
12451245.. index :: pair: object; frame
12461246
1247- Frame objects represent execution frames. They may occur in traceback objects
1248- (see below), and are also passed to registered trace functions.
1247+ Frame objects represent execution frames. They may occur in
1248+ :ref: `traceback objects <traceback-objects >`,
1249+ and are also passed to registered trace functions.
12491250
12501251.. index ::
12511252 single: f_back (frame attribute)
@@ -1352,26 +1353,30 @@ Traceback objects
13521353 single: sys.exception
13531354 single: sys.last_traceback
13541355
1355- Traceback objects represent a stack trace of an exception. A traceback object
1356+ Traceback objects represent the stack trace of an :ref: `exception <tut-errors >`.
1357+ A traceback object
13561358is implicitly created when an exception occurs, and may also be explicitly
13571359created by calling :class: `types.TracebackType `.
13581360
1361+ .. versionchanged :: 3.7
1362+ Traceback objects can now be explicitly instantiated from Python code.
1363+
13591364For implicitly created tracebacks, when the search for an exception handler
13601365unwinds the execution stack, at each unwound level a traceback object is
13611366inserted in front of the current traceback. When an exception handler is
13621367entered, the stack trace is made available to the program. (See section
13631368:ref: `try `.) It is accessible as the third item of the
1364- tuple returned by `` sys.exc_info() ` `, and as the ``__traceback__ `` attribute
1369+ tuple returned by :func: ` sys.exc_info `, and as the ``__traceback__ `` attribute
13651370of the caught exception.
13661371
13671372When the program contains no suitable
13681373handler, the stack trace is written (nicely formatted) to the standard error
13691374stream; if the interpreter is interactive, it is also made available to the user
1370- as `` sys.last_traceback ` `.
1375+ as :data: ` sys.last_traceback `.
13711376
13721377For explicitly created tracebacks, it is up to the creator of the traceback
1373- to determine how the `` tb_next `` attributes should be linked to form a
1374- full stack trace.
1378+ to determine how the :attr: ` ~traceback. tb_next ` attributes should be linked to
1379+ form a full stack trace.
13751380
13761381.. index ::
13771382 single: tb_frame (traceback attribute)
@@ -1380,27 +1385,40 @@ full stack trace.
13801385 pair: statement; try
13811386
13821387Special read-only attributes:
1383- :attr: `tb_frame ` points to the execution frame of the current level;
1384- :attr: `tb_lineno ` gives the line number where the exception occurred;
1385- :attr: `tb_lasti ` indicates the precise instruction.
1388+
1389+ .. list-table ::
1390+
1391+ * - .. attribute:: traceback.tb_frame
1392+ - Points to the execution :ref: `frame <frame-objects >` of the current
1393+ level.
1394+
1395+ Accessing this attribute raises an
1396+ :ref: `auditing event <auditing >` ``object.__getattr__ `` with arguments
1397+ ``obj `` and ``"tb_frame" ``.
1398+
1399+ * - .. attribute:: traceback.tb_lineno
1400+ - Gives the line number where the exception occurred
1401+
1402+ * - .. attribute:: traceback.tb_lasti
1403+ - Indicates the "precise instruction".
1404+
13861405The line number and last instruction in the traceback may differ from the
1387- line number of its frame object if the exception occurred in a
1406+ line number of its :ref: `frame object <frame-objects >` if the exception
1407+ occurred in a
13881408:keyword: `try ` statement with no matching except clause or with a
1389- finally clause.
1390-
1391- Accessing ``tb_frame `` raises an :ref: `auditing event <auditing >`
1392- ``object.__getattr__ `` with arguments ``obj `` and ``"tb_frame" ``.
1409+ :keyword: `finally ` clause.
13931410
13941411.. index ::
13951412 single: tb_next (traceback attribute)
13961413
1397- Special writable attribute: :attr: `tb_next ` is the next level in the stack
1398- trace (towards the frame where the exception occurred), or ``None `` if
1399- there is no next level.
1414+ .. attribute :: traceback.tb_next
14001415
1401- .. versionchanged :: 3.7
1402- Traceback objects can now be explicitly instantiated from Python code,
1403- and the ``tb_next `` attribute of existing instances can be updated.
1416+ The special writable attribute :attr: `!tb_next ` is the next level in the
1417+ stack trace (towards the frame where the exception occurred), or ``None `` if
1418+ there is no next level.
1419+
1420+ .. versionchanged :: 3.7
1421+ This attribute is now writable
14041422
14051423
14061424Slice objects
0 commit comments