Python (Try;Except) Как выделить несколько вариантов одной ошибки?
У меня есть несколько вариантов ошибки ApiError. Пример:
- vk_api.exceptions.ApiError: [5] User authorization failed: invalid access_token (4).
- vk_api.exceptions.ApiError: [9] Flood control: too much captcha requests
Можно ли как-нибудь различить их в except? Чтобы при разных ошибках выполнялись разные действия?
Пример Кода:
except vk_api.exceptions.ApiError as error_msg: (Тут нужна первая ошибка)
print(error_msg)
(Какое-нибудь действие)
except vk_api.exceptions.ApiError as error_msg: (Тут вторая ошибка)
print(error_msg)
(Какое-нибудь действие)
Надеюсь понятно описал проблему.
Ответы (1 шт):
Автор решения: Alpensin
→ Ссылка
У ApiError есть поле code.
Соответственно можно использовать if
except vk_api.exceptions.ApiError as error_msg:
if error_msg.code == 5:
...
if error_msg.code == 9:
...
Или создать словарь с функциями. Ключем будет код ошибки, а значением функция, выполняющая нужную обработку ошибки
def handle_foo(error_msg):
'''Делаю что-то с ошибкой'''
def handle_bar(error_msg):
'''Делаю что-то другое с ошибкой'''
API_ERROR_HANDLERS = {5: handle_foo, 9: handle_bar}
...
except vk_api.exceptions.ApiError as error_msg:
error_handler = API_ERROR_HANDLERS[error_msg.code]
error_handler(error_msg)