Python все еще выбрасывает исключение, которое я явно исключил - PullRequest
1 голос
/ 16 апреля 2019

У меня есть некоторый код, который, как я знаю, завершится с ошибкой в ​​крайнем случае, когда список пуст, поэтому я добавил обработку исключений для 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, почему он по-прежнему вызывается и прерывает выполнение скрипта.

Редактировать: добавив, что это Python 3.6 работаетв тетради Jupyter.Поскольку это выглядело как ошибка Python, я не думаю, что это было важно (но, похоже, это может быть.)

1 Ответ

2 голосов
/ 16 апреля 2019

Редакторы, поддерживающие IPython, включая Jupyter, не всегда перезагружают модули даже после их редактирования. Я думаю, что это может быть неудачным совпадением; строка, в которой выдается ошибка, совпадает со строкой вашего обработчика исключений после редактирования. Вероятно, код, выдавший ошибку, уже не тот, что в этой строке. Возможно, вы захотите принудительно перезагружать импортированные модули при каждом запуске скрипта или, по крайней мере, перезапустить базовое ядро ​​IPython.

...