在Python脚本中,有很多情况下键盘中断(Ctrl-C)无法终止进程,因为代码中某处存在一个裸的
翻译后:
except
子句。try:
foo()
except:
bar()
在Python 2.5或更高版本中的标准解决方案是捕获Exception
而不是使用不带参数的except
子句。翻译后:
在Python 2.5或更高版本中,标准解决方案是捕获Exception
而不是使用裸露的except
子句:
try:
foo()
except Exception:
bar()
这段代码有效的原因是,在Python2.5及以上版本中,KeyboardInterrupt
和SystemExit
继承自BaseException
而不是Exception
。然而,一些安装仍在运行Python 2.4。在Python 2.5之前的版本中,如何处理这个问题?
(我将自己回答这个问题,并将其放在这里,以便搜索该问题的人可以找到解决方案。)