我创建了一个程序,它从树视图中获取值,并在按下按钮时计算某些内容。我把try / except语句放在该函数中。
def SumAll():
try:
#do something (calculate)
except ValueError:
Error=messagebox.showinfo("Enter proper values")
pass
问题是,程序在出现messagebox.showinfo
时仍在运行,并且它会给出ValueError
。
我该如何解决这个问题?如何设置多个错误异常(IndexError
等)?
答案 0 :(得分:1)
您可以重新引发异常,如果异常到达堆栈顶部,程序将退出
try:
#do something (calculate)
except ValueError:
Error=messagebox.showinfo("Enter proper values")
raise
或者您可以手动拨打sys.exit
import sys
try:
#do something (calculate)
except ValueError:
Error=messagebox.showinfo("Enter proper values")
sys.exit(1)
要在同一个处理程序中捕获更多内容,您可以执行类似
的操作try:
#do something (calculate)
except (IndexError, ValueError):
Error=messagebox.showinfo("Enter proper values")
raise
或者如果你想要不同的处理程序,你可以
try:
#do something (calculate)
except IndexError:
Error=messagebox.showinfo("Some message")
raise
except ValueError:
Error=messagebox.showinfo("Enter proper values")
raise
答案 1 :(得分:0)
你可以通过以下方式获得倍数:
INSERT
这将防止分成少于3个项try:
k = input().split()[2]
i = int(k[0])
except (IndexError, ValueError) as e:
print(e) # list index error: 'Hello World', Value error: 'Hello World Tata'
else:
print("no error")
的输入以及int转换错误:'5 a'
(`' Is'``不是整数)
使用How to debug small programs (#1)来调试您的真实程序,除了 之外,您所遇到的错误。你可能会在其他地方得到一个结果错误,因为有些东西不能正常返回你的函数。