我试图抓住我的脑袋试试/除外。请参阅下面的代码......
status = raw_input('What is your status?')
#if x is anything other othan "citizen", "legal", or "illegal" raise a ValueError
try:
status == "citizen" or status == "legal" or status == "illegal"
except:
raise ValueError
因此,如果用户输入的内容不是指定的内容,我想提出一个ValueError,但这不会发生。我知道我可以使用If语句并以这种方式引发ValueError。但为什么这也不起作用。如果Try块中的任何内容为False,代码是否应该跳过except块?
答案 0 :(得分:2)
不,不应该。 尝试的问题不在于条件是否为真;这是语句块是否引发异常。 输出: 这个确实给了我们一个例外: 输出: 如果没有 try-except 块,我们会得到status = "other"
try:
status == "citizen" or status == "legal" or status == "illegal"
except:
raise ValueError
print "finished nicely"
finished nicely
status = "other"
option_dict = {
"citizen": 1,
"legal": 2,
"illegal": 3
}
try:
option = option_dict[status]
except:
raise ValueError
print "finished nicely"
Traceback (most recent call last):
File "/home/wdwickar/QA_Test/testcases/so.py", line 11, in <module>
raise ValueError
ValueError
KeyError: 'other'