首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyboardInterrupt异常

KeyboardInterrupt异常
EN

Stack Overflow用户
提问于 2020-08-01 18:37:29
回答 2查看 2.6K关注 0票数 4

我很难处理pycharm 3.8中的异常:

当我按下运行我的程序的ctrl+c时,它不起作用了,所以我被告知要使用pycharm控制台来测试它,它确实工作,中断了键盘的输入。

代码语言:javascript
复制
def readFloat(msg):
    while True:
        try:
            return float(input(f'{msg}'))
        except (ValueError, TypeError):
            print(f'\033[31mError. Not valid.\033[m')
            continue
        except KeyboardInterrupt:
            print('\033[31mYou didn\'t type a number.\033[m')
            return 0


b = readFloat('Your Number: ')
print(f'\nThat\'s your number: {b}')

但是现在,当我尝试Control+C时,它不会捕获我的But并打印我的自定义错误报告,返回0。它给了我一些巨大的红色错误线:

代码语言:javascript
复制
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.1.1\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars)  # execute the script
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.1.1\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:/Users/User/PycharmProjects/Curso/Aula 23/ex113.py", line 35, in <module>
    b = readFloat('Your Number: ')
  File "C:/Users/User/PycharmProjects/Curso/Aula 23/ex113.py", line 26, in readFloat
    return float(input(f'{msg}'))
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.1.1\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_stdin.py", line 64, in readline
    requested_input = self.rpc_client.requestInput()
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.1.1\plugins\python-ce\helpers\pydev\_pydev_comm\pydev_transport.py", line 226, in _req
    return super(TSyncClient, self)._req(_api, *args, **kwargs)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.1.1\plugins\python-ce\helpers\third_party\thriftpy\_shaded_thriftpy\thrift.py", line 160, in _req
    return self._recv(_api)
  File "C:\Program Files\JetBrains\PyCharm Community Edition 2020.1.1\plugins\python-ce\helpers\third_party\thriftpy\_shaded_thriftpy\thrift.py", line 192, in _recv
    raise v
console_thrift.KeyboardInterruptException: KeyboardInterruptException()

因此,我尝试添加一个泛型异常,只为了打印错误类,我得到了以下结果:

代码语言:javascript
复制
Error found: <class 'console_thrift.KeyboardInterruptException'>

因此,我无法检测到一个除keyboardInterrupt,并使用它,只是使用一个通用的异常,有什么想法吗?

编辑

我添加的唯一插件是一个主题用户界面,它可以运行完全黑色的吡喃,我认为其余的插件都是分期付款的。我使用CMD运行.py文件,它工作得很好,检测到键盘中断。

EN

回答 2

Stack Overflow用户

发布于 2020-10-29 20:28:35

试试这个:

代码语言:javascript
复制
try:
    from console_thrift import KeyboardInterruptException as KeyboardInterrupt
except ImportError:
    pass
票数 0
EN

Stack Overflow用户

发布于 2020-08-01 18:41:20

参考文献:Why doesn't this python keyboard interrupt work? (in pycharm)

IDE的特点是,它们与正常运行不太一样,特别是在处理键盘字符时。按照按ctrl的方式,IDE认为您想要复制文本。python程序从未看到该字符。也许它在运行时会打开一个单独的窗口?然后在ctrl之前选择那个窗口。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63208783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档