sys.exit通过引发
SystemExit异常来工作。由于您只有一个裸露的例外,因此您的
SystemExit异常会被捕获和抑制。
这就是为什么您不应该使用裸子句的原因之一。至少要抓住
Exception:
try: sys.exit()except Exception: pass
由于
SystemExit不继承自
Exception1,因此不会被捕获。 通常,如果您不知道如何处理异常,则永远不要捕获异常
。甚至捕获
Exception几乎总是比您想要的更广泛。
最后,如果您发现自己处在不得不处理别人代码的情况下,并且除了无法更改以外, 他们
几乎没有其他代码,可以
os._exit用来终止当前进程而无需提高
SystemExit。这通常是一个坏主意,但是只能在最恶劣的情况下使用2。
1
SystemExit并显式地
KeyboardInterrupt继承,
baseException这样当有人捕捉时它们 不会
被捕捉
Exception。
2希望我已经足够清楚地说明了最后一段旨在提供信息-我不建议使用;-)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)