Python 仍然抛出我已明确排除的异常

Python still throwing exception I've explicitly excepted

我有一些代码,我知道在列表为空的边缘情况下会失败,所以我为 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)即使在编辑后也不会总是重新加载模块。我认为这可能是一个不幸的巧合;抛出错误的行恰好与您的异常处理程序行重合 after 编辑。引发错误的代码可能不是该行现在的代码。您可能希望在每次 运行 脚本时强制重新加载导入的模块,或者至少现在重新启动底层 IPython 内核。