在python中生成特定的异常

在python中生成特定的异常,python,exception,boto3,Python,Exception,Boto3,我想生成一个特定于我得到的错误的异常 在获得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 Excepti

我想生成一个特定于我得到的错误的异常

在获得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

为什么我的行
除了ValidationError as validation\u error:
不起作用?如何生成此错误特有的异常?

我发现您在{vallidation\u error}中有一个输入错误,应该是{validation\u error}

我看到这段代码运行正常(我尝试了其他异常,尝试在下面一次取消注释一个异常)


尝试:
#session=bot3.session(profile\u name=aws\u账户,region\u name='us-east-1')
#raise VALUERROR(“创建会话时发生验证错误”)
引发名称错误(“出现名称错误异常”)
除ValueError作为验证错误外:
提升
打印(f“发生验证错误:{validation\u error}”)
例外情况除外,如e:
打印(f“发生异常:{e}”)
#设置_区域(aws_帐户)
输出

未注释的ValueError时:

raisevalueerror(“创建会话时发生验证错误”)
ValueError:创建会话时发生验证错误
未注释的NameError时(如示例所示):

发生异常:发生名称错误异常

我假设您正确导入了异常

我看到您在{vallidation\u error}中有一个输入错误,应该是{validation\u error}

我看到这段代码运行正常(我尝试了其他异常,尝试在下面一次取消注释一个异常)


尝试:
#session=bot3.session(profile\u name=aws\u账户,region\u name='us-east-1')
#raise VALUERROR(“创建会话时发生验证错误”)
引发名称错误(“出现名称错误异常”)
除ValueError作为验证错误外:
提升
打印(f“发生验证错误:{validation\u error}”)
例外情况除外,如e:
打印(f“发生异常:{e}”)
#设置_区域(aws_帐户)
输出

未注释的ValueError时:

raisevalueerror(“创建会话时发生验证错误”)
ValueError:创建会话时发生验证错误
未注释的NameError时(如示例所示):

发生异常:发生名称错误异常

我假设您正确导入了异常

请检查以下几点:

  • 您已经安装了
    botocore
  • 从botocore导入将使用的异常。异常导入验证错误
  • 代码应该如下所示:

    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:您似乎没有在脚本中导入异常。

    检查以下几点:

  • 您已经安装了
    botocore
  • 从botocore导入将使用的异常。异常导入验证错误
  • 代码应该如下所示:

    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:您似乎没有在脚本中导入异常。

    是否要自定义错误?当前您所做的只是在实际错误消息前面附加字符串。验证错误发生在实际错误消息前面,对信息没有任何影响。是的,我想要自定义错误。如果您发生自定义错误,
    bot3.Session(…)
    不会知道。您可能需要使用正则表达式来查找
    str(e)中包含的错误名称
    .python版本?我的版本是3.8。是否需要自定义错误?当前您所做的只是在实际错误消息前面附加字符串。验证错误发生在实际错误消息前面,对信息不起任何作用。是的,我想要自定义错误。如果发生自定义错误,
    bot3.Session(…)
    不会知道。您可能必须使用正则表达式来查找
    str(e)
    中包含的错误名称。python版本?我使用的是3.8版。