使用try-and-except引发异常时出现问题



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

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子句永远不会运行。如果roleGroobleThrovePlaguelet不匹配,则不会设置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的检查;(

最新更新