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