当函数被赋予无效角色时,我正试图引发异常。我的代码如下
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并打印";无效的Whosit角色";
您的__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
的检查;(