繁体   English   中英

发生错误后,使用raise函数停止在Python中进一步执行代码

[英]Using raise function to stop execution of further code in python after an error

当不满足条件时,我在python 2.7中使用raise函数作为停止进一步执行代码而不退出的方法。 在下面的示例中显示:

from Tkinter import *
import tkMessageBox

def foo():
    a = 3
    if a == 2:
        tkMessageBox.showinfo('Hello', 'Yup yup yup')
    else:
        tkMessageBox.showinfo('Hello', 'My bad!')
        raise

    tkMessageBox.showinfo('Further code' ,"You shouldn't see me if a is not 2")

app = Tk()
app.title("ABC")
app.geometry()


filetype_fasta = [('fasta files', '*.fasta'), ('All files', '*.*')]
button_templ = Button(app, text = 'Click me', width =6, command = foo)
button_templ.grid(row = 3, column = 2)

app.mainloop()

对于我拥有的复杂脚本,它工作正常。 我的问题是-以这种方式使用raise是否存在任何潜在的问题,我应该意识到? 如果是,是否有更好/通用的方法来做同样的事情?

编辑:更改示例以更好地演示该想法。

“ raise”陈述会引起的最大问题是缺乏沟通。 当使用抬高时,最好为使用抬高的函数添加一个文档字符串(即,在什么条件下函数/方法将引发错误,错误/原因是什么,等等)。

还要注意,调用函数(在您的示例中,调用方法foo的函数)需要适当地具有一个例外才能处理加薪。 甚至只有少数编码人员实际上使用raise语句来防止整个代码中出现多个return语句。 但是,在这些情况下,加薪将以相同的方法/功能处理。

为了更好地理解事物(为了新程序员或刚搬到您的项目的程序员的缘故),您可以创建自定义异常并在适当的位置引发它们,而不仅仅是给出一个引发语句。 正如Joran Beasley在评论中提到的那样,使用加薪绝对没有错。 除了应该有一个目的以外,还不仅仅使用抬高语句来中断流程。

确切地说,使用raise语句不会有任何问题。 但是,如果要使用引发语句,请遵循一些礼节,这会使维护代码的工作变得更简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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