diff options
author | Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | 2022-01-13 12:35:58 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-13 12:35:58 (GMT) |
commit | c590b581bba517f81ced2e6f531ccc9e2e22eab5 (patch) | |
tree | f3c49f2fa4a5eb43d403be8d8a811ebfc11f33fe /Python/sysmodule.c | |
parent | 9c2ebb906d1c68c3d571b100c92ceb08805b94cd (diff) | |
download | cpython-c590b581bba517f81ced2e6f531ccc9e2e22eab5.zip cpython-c590b581bba517f81ced2e6f531ccc9e2e22eab5.tar.gz cpython-c590b581bba517f81ced2e6f531ccc9e2e22eab5.tar.bz2 |
bpo-46328: Add sys.exception() (GH-30514)
Diffstat (limited to 'Python/sysmodule.c')
-rw-r--r-- | Python/sysmodule.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c index f912115..0b7b61d 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -772,6 +772,28 @@ sys_excepthook_impl(PyObject *module, PyObject *exctype, PyObject *value, /*[clinic input] +sys.exception + +Return the current exception. + +Return the most recent exception caught by an except clause +in the current stack frame or in an older stack frame, or None +if no such exception exists. +[clinic start generated code]*/ + +static PyObject * +sys_exception_impl(PyObject *module) +/*[clinic end generated code: output=2381ee2f25953e40 input=c88fbb94b6287431]*/ +{ + _PyErr_StackItem *err_info = _PyErr_GetTopmostException(_PyThreadState_GET()); + if (err_info->exc_value != NULL) { + return Py_NewRef(err_info->exc_value); + } + Py_RETURN_NONE; +} + + +/*[clinic input] sys.exc_info Return current exception information: (type, value, traceback). @@ -1963,6 +1985,7 @@ static PyMethodDef sys_methods[] = { SYS__CURRENT_FRAMES_METHODDEF SYS__CURRENT_EXCEPTIONS_METHODDEF SYS_DISPLAYHOOK_METHODDEF + SYS_EXCEPTION_METHODDEF SYS_EXC_INFO_METHODDEF SYS_EXCEPTHOOK_METHODDEF SYS_EXIT_METHODDEF @@ -2457,7 +2480,8 @@ Functions:\n\ \n\ displayhook() -- print an object to the screen, and save it in builtins._\n\ excepthook() -- print an exception and its traceback to sys.stderr\n\ -exc_info() -- return thread-safe information about the current exception\n\ +exception() -- return the current thread's active exception\n\ +exc_info() -- return information about the current thread's active exception\n\ exit() -- exit the interpreter by raising SystemExit\n\ getdlopenflags() -- returns flags to be used for dlopen() calls\n\ getprofile() -- get the global profiling function\n\ |