鱼C论坛

 找回密码
 立即注册
查看: 57|回复: 5

try finally结构中,为什么我没有触发‘晚安’ 两个字

[复制链接]
发表于 昨天 23:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题
>>> try:
...     while True:
...         pass
... finally:
...     print('晚安')
...     
KeyboardInterrupt
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 昨天 23:25 | 显示全部楼层
在这个代码片段中,`try...finally` 结构用于确保 `finally` 块中的代码在 `try` 块完成后总会执行。然而,在你的例子中,由于 `while True` 是一个无限循环,程序将一直运行在这个循环中,通常是无法手动中断的,除非触发异常。

当你按下 `Ctrl+C` 键来中断程序执行时,抛出了一个 `KeyboardInterrupt` 异常,程序跳出了 `try` 块来处理这个异常,这就导致 `finally` 块执行,打印出 `'晚安'`。

如果没有在执行过程中人为中断程序,`finally` 块永远不会执行输出 `'晚安'`。确保不中断的情况下执行 `finally`,可以在 `try` 块中加入可以终止循环的条件。

所以,正常情况下,如果你中断了程序,你应该看到 `'晚安'` 被打印出来。可能是因为键盘操作或者输入有误导致没有正常看到输出。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 11 小时前 | 显示全部楼层
格式不对
try:
    while True:
        pass
finally:
    print('晚安')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 10 小时前 | 显示全部楼层
屏幕截图 2025-01-10 011438.png

可以丫
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 小时前 | 显示全部楼层
>>> 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
>>> 可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 小时前 | 显示全部楼层
因为是无限循环,需要用Ctrl + C人工中断,中断循环后就会先执行finally打印“晚安”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-10 11:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表