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 内核。
我有一些代码,我知道在列表为空的边缘情况下会失败,所以我为 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 内核。