使用 try 和 except 引发异常时遇到问题
Trouble raising an exception using 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)
Famine 是一个无效的角色,但我正在努力让我的代码看到这个 ValueError 并打印“Invalid Whosit role”
您的 __init__
中没有任何内容会引发 ValueError
,因此 except ValueError
子句永远不会 运行。如果 role
不匹配 Grooble
、Throve
或 Plaguelet
,则不会设置 self.role
,仅此而已。如果 role
不匹配,IISC 你希望引发 ValueError
,所以你必须自己做:
def __init__(self, role, name, health):
if role in ['Grooble', 'Throve', 'Plaguelet']:
self.role = str(role)
else:
raise ValueError("Invalid Whosit role")
请注意,我还稍微简化了 role
的检查 ;)
我正在尝试在为我的函数提供无效角色时引发异常。我的代码如下
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)
Famine 是一个无效的角色,但我正在努力让我的代码看到这个 ValueError 并打印“Invalid Whosit role”
您的 __init__
中没有任何内容会引发 ValueError
,因此 except ValueError
子句永远不会 运行。如果 role
不匹配 Grooble
、Throve
或 Plaguelet
,则不会设置 self.role
,仅此而已。如果 role
不匹配,IISC 你希望引发 ValueError
,所以你必须自己做:
def __init__(self, role, name, health):
if role in ['Grooble', 'Throve', 'Plaguelet']:
self.role = str(role)
else:
raise ValueError("Invalid Whosit role")
请注意,我还稍微简化了 role
的检查 ;)