【发布时间】:2020-05-04 04:20:50
【问题描述】:
当我运行这段代码时:
while 1:
try:
pass
except KeyboardInterrupt:
pass
然后我按ctrl+c 尝试通过KeyboardInterrupt 终止程序,我通常会成功,但并不总是成功。大多数时候,我第一次尝试ctrl+c 会终止程序,但有时我需要按两次ctrl+c。
与此代码比较:
from time import sleep
while 1:
try:
sleep(0.000000000000000000000000000000000000000000000000000000000000000000001)
except KeyboardInterrupt:
pass
使用这段代码,无论我按多少次ctrl+c,程序都不会终止。
我的假设是,在第一种情况下,我的 KeyboardInterrupt 通常有效,因为 pass 语句执行得如此之快,以至于我更有可能在 while 循环条件检查期间按 ctrl+c(不在 try 块中)比在 pass 语句执行期间(在 try 块中)。
并且,在第二个示例中,我假设 sleep 函数的执行时间必须比 while 循环条件检查长得多,这样我几乎可以保证在其执行期间按 ctrl+c(因此在 try 块中捕获 KeyboardInterrupt并继续循环)。
谁能证实我的假设或给出替代推理?
【问题讨论】:
标签: python python-3.x error-handling while-loop keyboardinterrupt