summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/pylifecycle.c2
-rw-r--r--Python/pythonrun.c4
-rw-r--r--Python/sysmodule.c6
3 files changed, 9 insertions, 3 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index d0c65cc..7bf1227 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1304,7 +1304,7 @@ finalize_modules_delete_special(PyThreadState *tstate, int verbose)
{
// List of names to clear in sys
static const char * const sys_deletes[] = {
- "path", "argv", "ps1", "ps2",
+ "path", "argv", "ps1", "ps2", "last_exc",
"last_type", "last_value", "last_traceback",
"__interactivehook__",
// path_hooks and path_importer_cache are cleared
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 07d119a..6ea185a 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -776,6 +776,10 @@ _PyErr_PrintEx(PyThreadState *tstate, int set_sys_last_vars)
}
if (set_sys_last_vars) {
+ if (_PySys_SetAttr(&_Py_ID(last_exc), exc) < 0) {
+ _PyErr_Clear(tstate);
+ }
+ /* Legacy version: */
if (_PySys_SetAttr(&_Py_ID(last_type), typ) < 0) {
_PyErr_Clear(tstate);
}
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index cc5b9a6..126b7d4 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -2670,11 +2670,13 @@ stderr -- standard error object; used for error messages\n\
By assigning other file objects (or objects that behave like files)\n\
to these, it is possible to redirect all of the interpreter's I/O.\n\
\n\
+last_exc - the last uncaught exception\n\
+ Only available in an interactive session after a\n\
+ traceback has been printed.\n\
last_type -- type of last uncaught exception\n\
last_value -- value of last uncaught exception\n\
last_traceback -- traceback of last uncaught exception\n\
- These three are only available in an interactive session after a\n\
- traceback has been printed.\n\
+ These three are the (deprecated) legacy representation of last_exc.\n\
"
)
/* concatenating string here */