Как продолжить блокировку попытки при исключении с ошибкой ключа в python

#python #python-3.x #python-2.7 #jython-2.7

Вопрос:

     try:
        key1 = val1
        key2 = val2
        key3 = val3
    except KeyError:
        pass
    finally:
        createTask()
 

в приведенном выше примере, когда CreateTask() выполняется в цикле и ключи меняются для каждого запуска, как перейти к key2, если в key1 есть ошибка ключа для конкретного запуска ?

Комментарии:

1. Ты не можешь. Вы немедленно выходите из try и вводите except , когда возникает исключение.

2. есть ли какой-нибудь другой способ, которым я мог бы этого достичь ?

3. Использовать три разных try ... except блока?

4. у него длинный список ключей

5. if there is KeyError at key1 вы не представляете никакой операции, которая предположительно могла бы вызвать a KeyError . Пожалуйста, покажите createTask() , как проходит цикл.

Ответ №1:

Может быть, это сделает свою работу:

 for key, val in zip([k1, k2, k3], [v1, v2, v3]):
    try:
        key = val
    except KeyError:
        pass
    finally:
        createTask()
 

Ответ №2:

Поскольку вы просто передаете ошибку ключа, вы можете использовать dict get ее, чтобы избежать срабатывания KeyError . Тогда вам просто нужно будет убедиться, что createTask() он достаточно умен, чтобы обнаружить это состояние.

     key1 = your_dict.get(val1, None)
    key2 = your_dict.get(val2, None)
    key3 = your_dict.get(val3, None)
    createTask()