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
Run Code Online (Sandbox Code Playgroud)
当我按下时,Ctrl-C我看到"信号"和"除外",程序没有退出.
为什么程序没有退出,而它显然达到了sys.exit(0)?
为什么程序流不到达该KeyboardInterrupt部分?
在不退出的情况下,在不同的地方分别Ctrl-C处理和处理每个except:案例的简洁方法是什么?
该程序不会退出,因为sys.exit通过抛出SystemExit异常,你的毯子except捕获它.
在except KeyboardInterrupt不火,因为SIGINT处理程序安装覆盖默认的SIGINT处理程序,默认SIGINT处理程序负责抚养KeyboardInterrupt,当你按下Ctrl-C.
至于你的第三个问题,目前还不清楚你在问什么.
| 归档时间: |
|
| 查看次数: |
5305 次 |
| 最近记录: |