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

问题描述 投票:1回答:1

我有一些代码,我知道在列表为空的边缘情况下会失败,所以我为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错误我不认为这是相关的(但它听起来可能是。)

python python-3.x exception index-error
1个回答
2
投票

支持IPython的编辑器(包括Jupyter)即使在编辑后也不会重新加载模块。我认为这可能是一个不幸的巧合;抛出错误的行恰好与编辑后的异常处理程序行重合。可能抛出错误的代码现在不在那条线上。您可能希望每次运行脚本时强制重新加载导入的模块,或者至少现在重新启动基础IPython内核。

© www.soinside.com 2019 - 2024. All rights reserved.