2016-06-10 59 views
2

是否可以包含一個布爾表達式,如下所示,而使用try/except進行異常處理?使用布爾表達式進行異常處理

例如:

while True: 
try: 
    grade = float(input('Please enter your your score:')) 
    break 
except ValueError: 
    print('Please enter a numeric value, you dingus!') 
except (grade > 1): 
    print('Not a valid number, please re-enter:') 
except NameError: 
    print('Please enter a numeric value, you dingus!') 

我想進行字符串輸入到由處理 '除了NameError'。我想通過打印來處理大於1的數字'不是有效的數字,請重新輸入:'

因爲,程序按預期處理字符串和有效的數字輸入。但是,當我輸入的數字大於1時,程序會接受我的輸入並且不會執行其他任何操作。除了執行命令之外,沒有任何內容傳遞給在此異常處理代碼片段下找到的函數。該程序只是停止,並沒有錯誤給予幫助調試。

回答

2

這給一個鏡頭:

while True: 
    try: 
    grade = float(input('Please enter your your score:')) 
    if grade > 1: 
     raise ValueError 
    except ValueError: 
     print('Not a valid number, please re-enter.') 
    except NameError: 
     print('Please enter a numeric value, you dingus!') 
    except SyntaxError: 
     print('Please enter something, anything!?') 
+0

如何處理空白輸入任何輸入?例如,如果有人只是輸入而不輸入任何內容? – acecabana

+1

根據我的測試,肯定會是一個SyntaxError。請參閱編輯答案。 – bernie