引发用户输入异常
Raise an Exception on User Input
我正努力控制住自己的头脑 try/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 块?
不,不应该。 try 的问题不是条件是否为真;它是语句块是否引发异常。您的 "status ==" 表达式不会引发异常,因此不会执行 "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
没有 try-except 块,我们得到
KeyError: 'other'
我正努力控制住自己的头脑 try/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 块?
不,不应该。 try 的问题不是条件是否为真;它是语句块是否引发异常。您的 "status ==" 表达式不会引发异常,因此不会执行 "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
没有 try-except 块,我们得到
KeyError: 'other'