在while循环中处理异常

时间:2016-06-30 15:30:56

标签: python exception while-loop

如果网页尚未加载,我正在调用一个会引发异常的函数。我想等待2秒,然后再试一次,直到页面加载完毕。

我试试这个:

while(True):
    try:
        some_funciont()
        break
    except:
        time.sleep(2)

但它在第一次迭代后逃脱。

如果未引发异常,我该如何逃避?

5 个答案:

答案 0 :(得分:4)

尝试这样的事情:

def some_function(){
    try:
        #logic to load the page. If it is successful, it will not go to except.
        return True
    except:
        #will come to this clause when page will throw error.
        return False
    }

while(True)
    if some_function():
        break
    else:
        time.sleep(2)
        continue

答案 1 :(得分:3)

为什么不这样:

res = False
while (res == False):
    time.sleep(2)
    try:
        some_function()
        res = boolean(some_function())
    except:
        continue

答案 2 :(得分:1)

try块中的所有内容都将被执行,直到Exception被引发,这种情况下except块被调用。

所以你在第一次迭代中就会破裂。

我认为你的意思是:

while(True):
    try:
        some_function()
    except:
        time.sleep(2)
        break

引发异常时,while循环将被破坏。

答案 3 :(得分:-1)

这是因为如果你中断,它将会突破while循环。摆脱断裂和缩进除外。

while(True):
    try:
        some_function()
        if check_loaded:
            break
    except:
        time.sleep(2)

答案 4 :(得分:-1)

删除break语句。 Break应该在第一次

之后退出循环块