簡體   English   中英

為什么不能正確捕獲異常?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM