try finally结构中,为什么我没有触发‘晚安’ 两个字
如题>>> try:
... while True:
... pass
... finally:
... print('晚安')
...
KeyboardInterrupt
在这个代码片段中,`try...finally` 结构用于确保 `finally` 块中的代码在 `try` 块完成后总会执行。然而,在你的例子中,由于 `while True` 是一个无限循环,程序将一直运行在这个循环中,通常是无法手动中断的,除非触发异常。
当你按下 `Ctrl+C` 键来中断程序执行时,抛出了一个 `KeyboardInterrupt` 异常,程序跳出了 `try` 块来处理这个异常,这就导致 `finally` 块执行,打印出 `'晚安'`。
如果没有在执行过程中人为中断程序,`finally` 块永远不会执行输出 `'晚安'`。确保不中断的情况下执行 `finally`,可以在 `try` 块中加入可以终止循环的条件。
所以,正常情况下,如果你中断了程序,你应该看到 `'晚安'` 被打印出来。可能是因为键盘操作或者输入有误导致没有正常看到输出。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 格式不对
try:
while True:
pass
finally:
print('晚安')
可以丫 >>> try:
print("Program is starting")
while True:
pass
finally:
print("Good night")
Program is starting
Good night
Traceback (most recent call last):
File "<pyshell#1>", line 4, in <module>
pass
KeyboardInterrupt
>>> 可以的 因为是无限循环,需要用Ctrl + C人工中断,中断循环后就会先执行finally打印“晚安”
Tommy49 发表于 2025-1-10 08:01
因为是无限循环,需要用Ctrl + C人工中断,中断循环后就会先执行finally打印“晚安”
我人工中断了 返回了keyboardInterrupt,但是没有打印晚安 某一个“天” 发表于 2025-1-10 00:02
格式不对
啊 我之前是哪里格式错了呀 cindyber 发表于 2025-1-10 17:23
啊 我之前是哪里格式错了呀
缩进有问题
代码没问题
页:
[1]