You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中结合其他异常使用KeyboardInterrupt?

问题分析与修复

你的代码存在几个语法和逻辑问题,直接导致KeyboardInterrupt无法生效(甚至代码可能根本无法运行),下面逐一修正:

核心问题点

  • Python的布尔常量是**True**(首字母大写),不是true,且while语句末尾必须加冒号:
  • ImageNotFoundException是pyautogui模块下的异常,必须写成pyautogui.ImageNotFoundException,否则会报未定义错误
  • 变量tries未初始化就直接使用,会触发NameError
  • 代码缩进不规范,Python对缩进要求严格,必须保持统一层级(推荐用4个空格)

修正后的代码

import pyautogui
import time

tries = 0  # 初始化计数器
while True:  # 修正布尔值与语句结尾冒号
    tries += 1  # 每次循环递增计数器
    try:
        x, y = pyautogui.locateCenterOnScreen('default.png')                                                 
        pyautogui.click(x, y)
        print(x, y)
        time.sleep(0.5)

    except pyautogui.ImageNotFoundException:
        print(f"Nope nothing there. Try number: {tries}")  # 用f-string简化输出格式
        time.sleep(1)

    except KeyboardInterrupt:
        print("Manual shutdown activated...")
        time.sleep(1)
        break

补充说明

  1. 现在按下Ctrl+C可以正常触发KeyboardInterrupt,执行打印逻辑后退出循环
  2. 新增tries变量的初始化与递增逻辑,解决了未定义变量的问题
  3. 统一缩进层级,符合Python编码规范
  4. 用f-string替代旧的字符串拼接方式,代码更简洁易读

内容的提问来源于stack exchange,提问作者mmewtwosaysbye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:28:25