猿问

停止迭代异常

功能


def _copying(self):

    result = self.result.toPlainText().strip().split('\n')

    to_copy = '\n'.join(result)


    pyperclip.copy(to_copy)

在MainWindow()我PyQt5项目提出了在contextlib.py异常“的StopIteration” _GeneratorContextManager(),line 119 'next(self.gen)'。 result是一个ui.TextEdit对象。你能告诉我这是什么意思吗?谷歌说我应该把我的 func 包装成 with-construction,但我真的不明白如何,也不确定这是个好主意。


调试器说:


__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

控制台什么也没说。但该项目正在崩溃。


慕勒3428872
浏览 390回答 1
1回答

慕码人2483693

StopIteration 是完全正常和预期的。这是正常运行的一部分contextlib.contextmanager。应该发生的,它被抓住并立即处理;如果它没有发生,那就有问题了。我不知道你是如何看到这个异常的,考虑到它永远不会逃脱contextlib内部结构,但是如果你将代码的问题归咎于它,那你就错了事物。
随时随地看视频慕课网APP

相关分类

Python
我要回答