[英]Stop program from running after try / except python
我制作了一个程序,该程序从treeview中获取值并在按下按钮时计算出一些东西。 我在该函数中放入了try / except语句。
def SumAll():
try:
#do something (calculate)
except ValueError:
Error=messagebox.showinfo("Enter proper values")
pass
问题是,当messagebox.showinfo
出现时,程序将继续运行,并给出ValueError
。 如何解决该问题,以及如何放置多个错误异常( IndexError
等)?
您可以重新引发异常,并且如果异常到达堆栈的顶部,程序将退出
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
您可以通过以下方式捕获倍数:
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")
这将防止输入拆分成少于3个项'5 a'
以及防止int转换错误: 'Hello World Is A Cool Thing'
(“ Is”不是整数)。
使用如何调试小程序(#1)通过你的真正的程序,你会得到高于此不同的是所捕获的错误调试。 您可能会在其他地方得到结果错误,因为函数返回不正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.