Создает указанное c исключение в python - PullRequest
1 голос
/ 14 января 2020

Я хотел бы создать исключение, указывающее c на полученную ошибку.

При получении сеанса для AWS пользователь должен ввести код MFA:

try:
    session = boto3.Session(profile_name=aws_account,region_name='us-east-1')
except ValidationError as validation_error:
    print(f"A validation error has occurred: {vallidation_error}")
except Exception as e:
    print(f"An exception has occurred: {e}")
    set_regions(aws_account)

Исключение выглядит следующим образом:

An exception has occcurred: An error occurred (ValidationError) when calling the AssumeRole operation: 2 validation errors detected: Value '2121212dsa' at 'tokenCode' failed to satisfy constraint: Member must satisfy regular expression pattern: [\d]*; Value '2121212dsa' at 'tokenCode' failed to satisfy constraint: Member must have length less than or equal to 6

Почему моя строка except ValidationError as validation_error: не работает? Как я могу создать исключение, уникальное для этой ошибки?

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Проверьте следующие пункты:

  1. Вы установили botocore библиотека
  2. Импортируйте исключения, которые будут использоваться с помощью from botocore.exceptions import ValidationError

. код может выглядеть следующим образом:

import boto3
from botocore.exceptions import ValidationError

...

try:
    session = boto3.Session(profile_name=aws_account,region_name='us-east-1')
except ValidationError as validation_error:
    print(f"A validation error has occurred: {vallidation_error}")
except Exception as e:
    print(f"An exception has occurred: {e}")
    set_regions(aws_account)

PS: похоже, вы не импортировали исключения в сценарии.

0 голосов
/ 14 января 2020

Я вижу, у вас есть опечатка в {vallidation_error} должна быть {validation_error}?

Я вижу, что этот код работает нормально (я пытался с другими исключениями, попробуйте раскомментировать одно исключение за раз ниже.


try:
    #session = boto3.Session(profile_name=aws_account,region_name='us-east-1')
    #raise ValueError("A validation error occurred while creation a session")
    raise NameError(" A name error exception ocurred")
except ValueError as validation_error:
    raise
    print(f"A validation error has occurred: {validation_error}")
except Exception as e:
    print(f"An exception has occurred: {e}")
    #set_regions(aws_account)

OUTPUT

При нескомментированном ValueError:

raise ValueError("A validation error occurred while creation a session")
ValueError: A validation error occurred while creation a session

При нескомментированном NameError (как в примере):

An exception has occurred:  A name error exception occurred

Я предполагаю, что вы правильно импортировано исключение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...