Обработка ошибок при работе с фрагментами кода

Я запускаю кучу кода одновременно на python, копируя его из моего редактора и вставляя его в python. Этот код включает в себя вложенные циклы. Я занимаюсь поиском в Интернете, и программа закрывается в разное время. Я подозреваю, что это потому, что он не успевает загрузить. Я получаю следующую ошибку (еще раз - программа каждый раз очищает тексты):

Traceback (most recent call last):
  File "<stdin>", line 35, in <module>
IndexError: list index out of range

Во-первых, что делает line 35 Ссылаться на? Это место в соответствующем внутреннем цикле for?

Во-вторых, я думаю, что ошибка может быть вызвана строкой кода, использующей селен, например:

driver.find_elements_by_class_name("button")[j-1].click()

В этом случае, как можно справиться с этой ошибкой? Каков пример кода с явным ожиданием или обработкой исключений, который решит проблему?

3 ответа

Решение

Вы можете попробовать свой код и поймать исключение IndexError следующим образом:

try:
    # your code here
except IndexError:
    # handle the error here

Ошибка IndexError возникает при попытке доступа к индексу несуществующего списка. Например:

>>> a = [1, 2, 3]
>>> print(a[10])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

Трудно сказать, как вы должны обработать ошибку без более подробной информации.

Это означает, что [j-1] не существует для данного значения jвозможно, если j-1 превышает максимальное количество элементов в списке

При работе с фрагментами кода удобно открывать их в текстовом редакторе и

  • только скопируйте и вставьте в консоль ту часть, над которой вы сейчас работаете, чтобы все соответствующие переменные находились в локальном пространстве имен, которое вы можете исследовать из консоли, или
  • скопируйте и вставьте кусок от среднего до большого в целом, включив автоматический посмертный вызов отладчика, например, с автоматическим запуском отладчика по исключительному рецепту Activestate или IPython% pdb magic, или
  • запустить сценарий целиком под отладчиком, например с -m pdb % Выполнения IPython или с помощью IDE.
Другие вопросы по тегам