#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
вы не представляете никакой операции, которая предположительно могла бы вызвать aKeyError
. Пожалуйста, покажите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()