根据sys.exit
和SystemExit
上的文档,似乎
def sys.exit(return_value=None): # or return_value=0
raise SystemExit(return_value)
是正确的还是sys.exit
之前做了别的事情?
答案 0 :(得分:7)
根据Python/sysmodule.c
,提升SystemExit
即可。
static PyObject *
sys_exit(PyObject *self, PyObject *args)
{
PyObject *exit_code = 0;
if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code))
return NULL;
/* Raise SystemExit so callers may catch it or clean up. */
PyErr_SetObject(PyExc_SystemExit, exit_code);
return NULL;
}
答案 1 :(得分:3)
static PyObject *
sys_exit(PyObject *self, PyObject *args)
{
PyObject *exit_code = 0;
if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code))
return NULL;
/* Raise SystemExit so callers may catch it or clean up. */
PyErr_SetObject(PyExc_SystemExit, exit_code);
return NULL;
}
它只提升SystemExit并且不做任何其他事情
答案 2 :(得分:3)
是的,提出SystemExit
并致电sys.exit
功能相同。 See sys
module source
PyErr_SetObject
函数是CPython实现引发Python异常的方式。