我知道sys.exit()会引发一个Exit异常,所以当我运行它时我知道它不会退出:
In [25]: try:
....: sys.exit()
....: except:
....: print "oops"
....:
oops
但我认为os._exit()意味着使用C调用退出,但它也导致异常:
In [28]: try:
....: os._exit()
....: except:
....: print "oops"
....:
oops
有没有办法在不杀死PID的情况下这样做?
答案 0 :(得分:9)
我不确定我理解你的问题,但是os._exit
没有引发异常 - 你用错误的参数数量调用os._exit
是:
try:
os._exit()
except Exception as e:
print e
#output: _exit() takes exactly 1 argument (0 given)
答案 1 :(得分:4)
如果没有Exception类,请不要使用except
,因此sys.exit
只会在不触发异常处理的情况下正常工作:
>>> import sys
>>> try:
... sys.exit()
... except Exception:
... print 'oops'
...
$
还有其他异常是使用普通的except子句触发的(通常不应该),尤其是KeyboardInterrupt
。