2016-06-10 60 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