我有一些代码,我知道在列表为空的边缘情况下会失败,所以我为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错误我不认为这是相关的(但它听起来可能是。)
支持IPython的编辑器(包括Jupyter)即使在编辑后也不会重新加载模块。我认为这可能是一个不幸的巧合;抛出错误的行恰好与编辑后的异常处理程序行重合。可能抛出错误的代码现在不在那条线上。您可能希望每次运行脚本时强制重新加载导入的模块,或者至少现在重新启动基础IPython内核。