2016-02-09 17 views
-1

我试图抓住我的头试试/除了。请参阅下面的代码....所以,我想提出一个ValueError如果用户输入的东西以外的东西是指定的,这是不会发生的。我知道我可以使用If语句并以这种方式引发ValueError。但为什么这不起作用呢。如果Try块中的任何内容为False,代码是否应该跳过except块?提出用户输入异常

回答

2

不,不应该。 尝试的问题不在于条件评估是否为真;这是语句块是否引发异常。你的“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 

没有试用 - 除了区块,我们得到

KeyError: 'other'