提问人:Dillon Teakell 提问时间:7/29/2023 更新时间:7/29/2023 访问量:41
如何使 try-except 语句多次捕获错误?[复制]
How do I make a try-except statement catch an error more than once? [duplicate]
问:
我目前正在制作一个带有菜单的计算器应用程序。当无效的输入(例如。String) 时,将引发异常。ValueError
我有一个阻止来捕获异常。但是,它只会抓住一次。如果我之后执行完全相同的输入,则会引发异常并且不会捕获。try-except
ValueError
我有代码
源语言
def get_user_choice():
try:
user_choice = int(input("Choice: "))
except ValueError:
print("\nERROR: Please enter a valid integer value. Retrying...\n")
time.sleep(0.5)
show_menu()
user_choice = int(input("Choice: "))
pass
改 性
如果我把函数放在 而不是要求 ,它会抛出一个 .get_user_choice()
except
user_choice
UnboundLocalError
try:
user_choice = int(input("Choice: "))
except (ValueError, UnboundLocalError):
print("\nERROR: Please enter a valid integer value. Retrying...\n")
time.sleep(0.5)
show_menu()
get_user_choice()
pass
答:
0赞
Jon Zavialov
7/29/2023
#1
将 try-except 移动到循环中。它将继续运行,直到输入有效值并返回。
def get_user_choice():
while True:
try:
user_choice = int(input("Choice: "))
return user_choice
except ValueError:
print("\nERROR: Please enter a valid integer value. Retrying...\n")
time.sleep(0.5)
show_menu()
user_input = get_user_choice()
你也可以使用递归:
def get_user_choice():
try:
return int(input("Choice: "))
except ValueError:
print("\nERROR: Please enter a valid integer value. Retrying...\n")
time.sleep(0.5)
show_menu()
return get_user_choice()
修改后的代码中的问题是未返回该值。
评论