除了块之外,Python程序不会退出

时间:2016-06-13 20:40:59

标签: python exception-handling

我有一个python程序,可以进行一些数据收集。在收集功能中,我必须首先检查网络连接是否仍然存在,如果它已经断开连接则退出(1):

try:
    collect_data()
except:
    logging.error("Connection dropped. Exiting program.")
    exit(1)

问题是程序没有退出。我知道except块的执行是因为日志文件显示“Connection dropped”。错误。知道怎么会发生这种情况吗?

使用Python 2.7

1 个答案:

答案 0 :(得分:0)

感谢@ user2357112以及所有评论过这一点的人。事实证明我除了陈述之外还使用了太多的毯子而且发生了两件事情:

  1. 根据调用exit()的时间,它有时被其他除了块捕获并被忽略。

  2. 有时当我在collect_data()中使用Ctrl-C KeyboardInterrupt杀死程序时,除了偶然阻塞之外,它被上面捕获(由于问题#1,我之前没有注意到)。 / p>

  3. 更正的代码应该是这样的:

    try:
        collect_data()
    except Exception as e:
        logging.error("Connection dropped. Exiting program.")
        sys.exit(1)
    

    这解决了我遇到的问题。再次感谢你,让我免于愚蠢。