首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用try和except引发异常时出现问题

使用try和except引发异常时出现问题
EN

Stack Overflow用户
提问于 2021-06-01 14:24:11
回答 1查看 39关注 0票数 0

当我的函数被赋予无效的角色时,我试图引发异常。我的代码如下

代码语言:javascript
复制
    def __init__(self, role, name, health):
        try:
            if role == 'Grooble' or role == 'Throve' or role == 'Plaguelet':
                self.role = str(role)
        
        except ValueError:
            print("Invalid Whosit role")  

测试结果是

代码语言:javascript
复制
try:
    oof = Whosit('Famine', 'Fred', 0)
    print("Did you forget to raise an exception?")
except ValueError as e:
    print(e)

饥荒是一个无效的角色,但我正在努力让我的代码看到这个ValueError并输出"Invalid Whosit“。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-01 14:31:46

您的__init__中没有任何东西会引发ValueError,因此except ValueError子句将永远不会运行。如果roleGroobleThrovePlaguelet不匹配,则不会设置self.role,但仅此而已。IISC如果role不匹配,您希望引发ValueError,因此您必须自己执行此操作:

代码语言:javascript
复制
    def __init__(self, role, name, health):
        if role in ['Grooble', 'Throve', 'Plaguelet']:
            self.role = str(role)
        else:
            raise ValueError("Invalid Whosit role")

请注意,我还稍微简化了对role的检查;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67783635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档