Исключение StopItate - PullRequest
       8

Исключение StopItate

0 голосов
/ 01 февраля 2019

function

def _copying(self):
    result = self.result.toPlainText().strip().split('\n')
    to_copy = '\n'.join(result)

    pyperclip.copy(to_copy)

в MainWindow() моего проекта PyQt5 вызывает исключение "StopIteration" в contextlib.py _GeneratorContextManager(), line 119 'next(self.gen)'.result является ui.TextEdit объектом.Не могли бы вы сказать мне, что это значит?Google говорит, что я должен обернуть свою функцию в конструкцию, но я не совсем понимаю, как, и не уверен, что это хорошая идея.

Отладчик говорит:

__exception__ = {tuple} <class 'tuple'>: (<class 'StopIteration'>, StopIteration(), <traceback object at 0x045DA918>)
 0 = {type} <class 'StopIteration'>
  args = {getset_descriptor} <attribute 'args' of 'BaseException' objects>
  value = {member_descriptor} <member 'value' of 'StopIteration' objects>
 1 = {StopIteration} 
  args = {tuple} <class 'tuple'>: ()
  value = {NoneType} None
 2 = {traceback} <traceback object at 0x045DA918>
  tb_frame = {frame} __exit__ [contextlib.py:119]  id:54111736
  tb_lasti = {int} 16
  tb_lineno = {int} 119
  tb_next = {NoneType} None
 __len__ = {int} 3

Консольничего не говоритНо проект рушится.

1 Ответ

0 голосов
/ 01 февраля 2019

То, что StopItered совершенно нормально и ожидаемо.Это часть нормальной работы contextlib.contextmanager.Это должно произойти, и это поймано и обработано немедленно;если это не происходит, есть проблема.

Я не знаю, как вы вообще оказались в той точке, где вы смотрите на это исключение, учитывая, как ононикогда не ускользает от внутренних органов contextlib, но если вы обвиняете его в проблемах своего кода, вы обвиняете не того.

...