3

我知道 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 的情况下做到这一点?

4

2 回答 2

9

我不确定我是否理解您的问题,但os._exit没有引发异常——您os._exit使用错误数量的参数调用是:

try:
    os._exit()
except Exception as e:
    print e

#output: _exit() takes exactly 1 argument (0 given)
于 2012-06-05T16:07:08.903 回答
4

不要在没有exceptException 类的情况下使用,这样sys.exit就可以在不触发异常处理的情况下正常工作:

>>> import sys
>>> try:
...     sys.exit()
... except Exception:
...     print 'oops'
... 
$ 

还有其他异常是用普通的 except 子句触发的(通常不应该),尤其是KeyboardInterrupt.

于 2012-06-05T16:07:04.373 回答