【发布时间】:2019-09-06 12:30:56
【问题描述】:
我知道一些代码在列表为空的边缘情况下会失败,因此我为IndexError 添加了异常处理。
但是,尽管处理了异常,它仍然被引发。
~/Code/foo.py in decode_tokens(tokens)
196 new_toks.append(new_tok)
197 else:
--> 198 try: new_toks[-1] += new_tok
199 except IndexError: pass
200 new_elem = True
IndexError: list index out of range
我不明白如果我明确排除 IndexError 为什么它仍然会引发并中止脚本执行。
编辑:补充说这是在 Jupyter 笔记本中运行的 Python 3.6。因为它看起来像一个 python 错误,所以我认为这不相关(但听起来可能是。)
【问题讨论】:
-
向我们展示一下代码中的语句是什么样子的?你能用minimal reproducible example更新你的问题吗?
-
我无法复制
-
我不认识那个运行环境。你在调试器中运行吗?尽管脚本不应该失败,但有些可能仍会显示异常。如果您从命令行运行脚本,您会看到什么?
-
让我们来讨论一个稍微远一点的问题。你使用的是 Spyder/Enthought Canopy 还是其他支持 IPython 的东西?
-
在这种情况下,如果您在代码运行时修改了模块,那么该异常很可能是一个可怕的巧合。 Jupyter 有一个底层的 IPython 内核,当在一个已经被编辑过的模块中抛出异常时,很可能会出现行不匹配。重启内核
标签: python python-3.x exception index-error