如何根据if语句的条件提出特定的例外?

发布于 2025-02-10 15:50:02 字数 469 浏览 1 评论 0原文

我有多个例外,只有在条件为真时才想提出特定的异常。你知道是否可能吗?

def lambda_handler(event, context):

    verif = boto3.resource('iam')
    client_iam = boto3.client('iam')
    user = verif.User('Tom')
    try:
        user.load()
        if verif.exceptions.NoSuchEntityException:
            raise Userdoesnotexist
        if ex.response['Error']['Code'] != 'NoSuchEntityException':
            raise Userexists

    except Userdoesnotexist:

    except Userexists:

I have multiple exceptions and want to raise a specific exception only if a condition is true. Do you know if it would be possible ?

def lambda_handler(event, context):

    verif = boto3.resource('iam')
    client_iam = boto3.client('iam')
    user = verif.User('Tom')
    try:
        user.load()
        if verif.exceptions.NoSuchEntityException:
            raise Userdoesnotexist
        if ex.response['Error']['Code'] != 'NoSuchEntityException':
            raise Userexists

    except Userdoesnotexist:

    except Userexists:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天气好吗我好吗 2025-02-17 15:50:02

是的。应该有可能。例如,我从Python的错误和例外文档中找到了这一点。

在此示例中,例外已放在列表中。 并且例外是一个一个

class B(Exception):
    pass

class C(B):
    pass

class D(C):
    pass

for cls in [B, C, D]:
    try:
        raise cls()
    except D:
        print("D")
    except C:
        print("C")
    except B:
        print("B")

该列表已在for循环中迭代,

class Userdoesnotexist(Exception):
    def __init__(self, message):            
        # Call the base class constructor with the parameters it needs
        super().__init__(message)

class Userexists(Exception):
    def __init__(self, message):            
        # Call the base class constructor with the parameters it needs
        super().__init__(message)

def lambda_handler(event, context):

    verif = boto3.resource('iam')
    client_iam = boto3.client('iam')
    user = verif.User('Tom')
    try:
        user.load()
        if verif.exceptions.NoSuchEntityException:
            raise Userdoesnotexist("user does not exist.")
        if ex.response['Error']['Code'] != 'NoSuchEntityException':
            raise Userexists("user exist.")

。 stackoverflow.com/questions/1319615/proper-way-to-declare-custom-exceptions-in-Modern-python"> thread 。

Yes. it should be possible. as an example i found this from the Errors and Exceptions documentation of python.

In this example the exceptions are put on a list. The list is iterated in the for loop and the exceptions are raised one by one..

class B(Exception):
    pass

class C(B):
    pass

class D(C):
    pass

for cls in [B, C, D]:
    try:
        raise cls()
    except D:
        print("D")
    except C:
        print("C")
    except B:
        print("B")

For your purpose maybe it would look something like:

class Userdoesnotexist(Exception):
    def __init__(self, message):            
        # Call the base class constructor with the parameters it needs
        super().__init__(message)

class Userexists(Exception):
    def __init__(self, message):            
        # Call the base class constructor with the parameters it needs
        super().__init__(message)

def lambda_handler(event, context):

    verif = boto3.resource('iam')
    client_iam = boto3.client('iam')
    user = verif.User('Tom')
    try:
        user.load()
        if verif.exceptions.NoSuchEntityException:
            raise Userdoesnotexist("user does not exist.")
        if ex.response['Error']['Code'] != 'NoSuchEntityException':
            raise Userexists("user exist.")

Probably it is not perfect but you could take a look to this thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文