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