当我的函数被赋予无效的角色时,我试图引发异常。我的代码如下
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") 测试结果是
try:
oof = Whosit('Famine', 'Fred', 0)
print("Did you forget to raise an exception?")
except ValueError as e:
print(e)饥荒是一个无效的角色,但我正在努力让我的代码看到这个ValueError并输出"Invalid Whosit“。
发布于 2021-06-01 14:31:46
您的__init__中没有任何东西会引发ValueError,因此except ValueError子句将永远不会运行。如果role与Grooble、Throve或Plaguelet不匹配,则不会设置self.role,但仅此而已。IISC如果role不匹配,您希望引发ValueError,因此您必须自己执行此操作:
def __init__(self, role, name, health):
if role in ['Grooble', 'Throve', 'Plaguelet']:
self.role = str(role)
else:
raise ValueError("Invalid Whosit role")请注意,我还稍微简化了对role的检查;)
https://stackoverflow.com/questions/67783635
复制相似问题