[英]Why exception is not properly caught?
我有一段代码。
import sys
while(True):
print "Enter a number: "
try:
number = int(sys.stdin.readline())
except ValueError:
print "Error! Enter again an integer value"
continue
finally:
print number
break
在这里,我希望当我输入一个非整数时,输出应该是
Error! Enter again an integer value
然后它应该要求输入。 但是它正在打印消息,但要求进一步输入。 请解释一下,或者认为有误。
如果我使用NameError进行处理,则错误消息甚至都不会被打印,并且该程序将通过回溯调用退出。
您的finally
应该为else
,否则它将执行,无论是否存在异常。
无论是否捕获到异常, finally
子句始终运行。 您需要else
,它在没有异常的情况下运行。
另外:你不需要括号的while
,你可能想raw_input
函数,它是一个更好一点比搞乱使用sys.stdin
直接。
所以我会做:
while True:
try:
number = int(raw_input("Enter a number: "))
except ValueError:
print "Error! Enter again an integer value"
continue
else:
print number
break
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.