尝试/除了python之后停止运行程序

时间:2018-04-21 07:54:25

标签: python

我创建了一个程序,它从树视图中获取值,并在按下按钮时计算某些内容。我把try / except语句放在该函数中。

def SumAll():
    try:
       #do something (calculate)

    except ValueError:

        Error=messagebox.showinfo("Enter proper values")
        pass

问题是,程序在出现messagebox.showinfo时仍在运行,并且它会给出ValueError。 我该如何解决这个问题?如何设置多个错误异常(IndexError等)?

2 个答案:

答案 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)来调试您的真实程序,除了 之外,您所遇到的错误。你可能会在其他地方得到一个结果错误,因为有些东西不能正常返回你的函数。