Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
gh-119786: move a few more details on exception handling from devguide to InternalDocs#124989
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Changes fromall commits
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
…e to InternalDocs
- Loading branch information
Uh oh!
There was an error while loading.Please reload this page.
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -75,7 +75,8 @@ table. If it finds a handler, control flow transfers to it. Otherwise, the | ||
| exception bubbles up to the caller, and the caller's frame is | ||
| checked for a handler covering the `CALL` instruction. This | ||
| repeats until a handler is found or the topmost frame is reached. | ||
| If no handler is found, then the interpreter function | ||
| (``_PyEval_EvalFrameDefault()``) returns NULL. During unwinding, | ||
| the traceback is constructed as each frame is added to it by | ||
| ``PyTraceBack_Here()``, which is in | ||
| [Python/traceback.c](https://github.com/python/cpython/blob/main/Python/traceback.c). | ||
| @@ -182,3 +183,12 @@ The interpreter's function to lookup the table by instruction offset is | ||
| The Python function ``_parse_exception_table()`` in | ||
| [Lib/dis.py](https://github.com/python/cpython/blob/main/Lib/dis.py) | ||
| returns the exception table content as a list of namedtuple instances. | ||
| Exception Chaining Implementation | ||
| --------------------------------- | ||
| [Exception chaining](https://docs.python.org/dev/tutorial/errors.html#exception-chaining) | ||
| refers to setting the ``__context__`` and ``__cause__`` fields of an exception as it is | ||
| being raised. The ``__context__`` field is set by ``_PyErr_SetObject()`` in | ||
| :cpy-file:`Python/errors.c` (which is ultimately called by all ``PyErr_Set*()`` functions). | ||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. ( Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. Oh oops, I missed that -- PR in a moment. [#124990] A | ||
| The ``__cause__`` field (explicit chaining) is set by the ``RAISE_VARARGS`` bytecode. | ||