在自定义def()和break中捕获异常

时间:2013-11-14 21:16:26

标签: python sikuli

我正在使用几个在迭代器中调用的小型自定义def。在实例中,其中一个defs捕获了一个异常,我希望它退出该定义并保持脚本运行。主要流程如下:

for TIME in QueuedTimes:
    def1(DATE, TIME)
    def2(DATE, TIME)
    def3(DATE, TIME)

假设上游def1()中的所有内容都很好,我希望def2()的逻辑如下

def def2(DATE, TIME):
    <beginstuff>
    while True:
        if exists(fileloaderror):
            print 'found error'
            break
        else:
            print 'pass'
            break
     <end stuff>

while True有效,但仅用于评估条件。我希望休息时间跳到def2()的末尾并继续def3()并跳过<end stuff>的所有剩余部分,这些部分将被我希望捕获的异常所打破。有更可信的方式吗?

2 个答案:

答案 0 :(得分:2)

如果您需要提前退出某个功能,请使用return

def def2(DATE, TIME):
    # stuff at the start
    while True:
        if exists(fileloaderror):
            print 'found error'
            break
        else:
            print 'pass'
            return
     # stuff at the end

这将突破循环跳过最后的东西。

答案 1 :(得分:0)

除非我错过了一些东西,但是真的是无用的,因为它一进入它就会一直退出,因为其中一个if ... else ...会破坏或返回循环。

为什么不这样做:

def def2(DATE, TIME):
    # stuff at the start
    if not exists(fileloaderror):
        print 'pass'
        return
    print 'found error'
    # stuff at the end