2016-02-09 20 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'