首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >避免在Python2.4中意外捕获KeyboardInterrupt和SystemExit

避免在Python2.4中意外捕获KeyboardInterrupt和SystemExit
EN

Stack Overflow用户
提问于 2010-04-20 02:09:09
回答 1查看 2.4K关注 0票数 18

在Python脚本中,有许多情况下,键盘中断(Ctrl-C)无法终止进程,因为代码中某个地方有一个空的except子句:

try:
    foo()
except:
    bar()

Python2.5或更高版本中的标准解决方案是捕获Exception,而不是使用纯except子句:

try:
    foo()
except Exception:
    bar()

这是因为,从Python2.5开始,KeyboardInterruptSystemExit继承自BaseException,而不是Exception。但是,某些安装仍在运行Python2.4。如何在Python2.5之前的版本中处理此问题?

(我将自己回答这个问题,但是把它放在这里,这样搜索它的人就可以找到解决方案。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-20 02:11:49

根据Python documentation的说法,在Python2.5之前的版本中处理这个问题的正确方法是:

try:
    foo()
except (KeyboardInterrupt, SystemExit):
    raise
except:
    bar()

这是非常冗长的,但至少它是一个解决方案。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2669750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档