【问题标题】:Why exception is not properly caught?为什么没有正确捕获异常?
【发布时间】:2015-11-07 06:36:56
【问题描述】:

我有一段代码。

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 进行处理,则甚至不会打印错误消息,并且程序会通过回溯调用退出。

【问题讨论】:

    标签: python python-2.7 exception-handling try-catch


    【解决方案1】:

    finally 子句总是运行,无论是否捕获到异常。你想要else,它在no异常时运行。

    另外: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
    

    【讨论】:

      【解决方案2】:

      你的finally应该是else,否则不管有没有异常都会执行。

      【讨论】:

        猜你喜欢
        • 2017-06-18
        • 2011-11-28
        • 2022-01-06
        • 1970-01-01
        • 2018-04-04
        • 2010-11-16
        • 2012-08-14
        • 1970-01-01
        • 2012-01-22
        相关资源
        最近更新 更多