提出用户输入的例外

时间:2016-02-09 18:51:18

标签: python exception try-catch except

我试图抓住我的脑袋试试/除外。请参阅下面的代码......

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块?

1 个答案:

答案 0 :(得分:2)

不,不应该。 尝试的问题不在于条件是否为真;这是语句块是否引发异常。

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

如果没有 try-except 块,我们会得到

KeyError: 'other'