Python 为什么异常没有被正确捕获?
我有一段代码Python 为什么异常没有被正确捕获?,python,python-2.7,exception-handling,try-catch,Python,Python 2.7,Exception Handling,Try Catch,我有一段代码 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 这里我希望当我输入一个非整数时,输出应该是 错误
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
这里我希望当我输入一个非整数时,输出应该是
错误!再次输入整数值
然后它应该请求输入。但它正在打印信息,但要求进一步输入。请解释一下,否则我会错的
如果我处理NameError,那么错误消息甚至不会被打印出来,程序会通过一个回溯调用退出。您的
finally
应该是else
,否则无论是否有异常,它都会执行。您的finally
应该是else
,否则,无论是否存在异常,它都将执行。无论是否捕获异常,finally
子句始终运行。您需要else
,它在没有异常时运行
另外:您不需要在while
中使用括号,而且您可能希望使用原始输入
函数,该函数比直接使用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
无论是否捕获异常,
finally
子句始终运行。您需要else
,它在没有异常时运行
另外:您不需要在while
中使用括号,而且您可能希望使用原始输入
函数,该函数比直接使用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