KeyboardInterrupt Exception - PullRequest
       50

KeyboardInterrupt Exception

2 голосов
/ 01 августа 2020

Мне сложно обрабатывать исключения в pycharm 3.8:

Когда я нажимаю ctrl + c, выполняя свою программу, она не работает, поэтому мне сказали использовать консоль pycharm для протестируйте его, и он действительно работает, прерывая ввод с клавиатуры.

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, он не ловит my except и распечатывает мой собственный отчет об ошибках, возвращая 0 Это дает мне несколько огромных красных строк ошибки:

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()

Поэтому я попытался добавить общее c исключение только для того, чтобы распечатать класс ошибки, и получил следующее:

Error found: <class 'console_thrift.KeyboardInterruptException'>

Итак, я не могу обнаружить исключение keyboardInterrupt и работать с ним, просто используя общее c исключение, какие-нибудь идеи?

Edit

Единственный плагин, который я добавил, - это пользовательский интерфейс темы для запуска pycharm полностью черным, остальные, я думаю, пришли с установкой. Я запустил файл .py с помощью CMD, и он отлично работает, обнаруживая прерывание клавиатуры.

1 Ответ

0 голосов
/ 01 августа 2020

Ссылка: Почему это python прерывание клавиатуры не работает? (в pycharm)

Особенность IDE заключается в том, что они не совсем то же самое, что работают в обычном режиме, особенно когда дело доходит до обработки символов клавиатуры. Когда вы нажимаете ctrl- c, ваша IDE думает, что вы хотите скопировать текст. Программа python никогда не видит персонажа. Возможно, при запуске появляется отдельное окно? Затем вы должны выбрать это окно перед ctrl- c.

...