为什么没有正确捕获异常?
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
我有一段代码。
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