gpt4 book ai didi

python - Python 中的 SIGINT 和异常处理

转载 作者:行者123 更新时间:2023-12-02 03:07:35 25 4
gpt4 key购买 nike

import signal
import sys
import time

def sigint_handler(signal, frame):
print "signal"
sys.exit(0)

signal.signal(signal.SIGINT, sigint_handler)

while 1:
try:
print "text"
time.sleep(2)
except KeyboardInterrupt:
print "keybi"
exit(0)
except:
print "except"
continue

当我按 Ctrl-C 时,我看到“signal”和“except”,并且程序不会退出。

  1. 为什么程序没有退出,而它显然已经达到了 sys.exit(0)

  2. 为什么程序流程没有到达KeyboardInterrupt部分?

  3. Ctrl-C 工作并在不同位置分别处理每个 except: 情况而不退出的简洁方法是什么?

    <

最佳答案

程序不会退出,因为 sys.exit 通过抛出 SystemExit 异常来工作,而您的毯子 except 捕获了它。

除了 KeyboardInterrupt 不会触发,因为您安装的 SIGINT 处理程序会覆盖默认的 SIGINT 处理程序,并且默认的 SIGINT 处理程序负责在您按下 Ctrl-C 时引发 KeyboardInterrupt

至于你的第三个问题,目前尚不清楚你在问什么。

关于python - Python 中的 SIGINT 和异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36514336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com