有没有更好的方法在python中多次尝试一个函数?

时间:2011-08-19 09:29:04

标签: python try-catch

我想在找到像这样的

这样的异常时多次执行test函数
    try:
        test()
    except:
        try:
            test()
        except:
            try:
                test()
            except Exception,e:
                logger.info(e)

这种情况将在我请求网址并获取网址响应时 因为当您只请求一次时,目标Web服务器可能会响应一些不良数据 这么多的话要做到这一点,而不是pythonic实现 有没有一些pythonic风格呢?

4 个答案:

答案 0 :(得分:7)

for _ in range(5):
    try:
        test()
    except SomeError:
        pass
    else:
        break
else:
    #All tries failed, do something.
    logger.info(...)

答案 1 :(得分:1)

试试这个:

for i in xrange(3):
    try:
        test()
    except Exception, e:
        if i == 3:
           # handle exception
           # ...

答案 2 :(得分:1)

while True:
    try:
        test()
        break
    except Exception, e:
        logger.info(e)

查看Handling Exceptions上的Python文档。

答案 3 :(得分:1)

for i in range(3):
    try:
        test()
    except Exception, e:
        if i==2:
            logger.info(e)