繁体   English   中英

在try / python之后,停止程序运行

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM