Есть ли лучший способ попробовать функцию много раз в Python? - PullRequest
0 голосов
/ 19 августа 2011

Я хочу выполнить функцию test много раз, когда он обнаружил исключение, подобное этому

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

, этот случай будет, когда я запрашиваю URL и получаю ответ URL
, потому что целевая сетьсервер может ответить на некоторые неверные данные, когда вы просто запрашиваете один раз,
если так много слов, чтобы сделать это, а не pythonic реализация
есть ли какой-нибудь pythonic стиль для этого?

Ответы [ 4 ]

7 голосов
/ 19 августа 2011
for _ in range(5):
    try:
        test()
    except SomeError:
        pass
    else:
        break
else:
    #All tries failed, do something.
    logger.info(...)
1 голос
/ 19 августа 2011
for i in range(3):
    try:
        test()
    except Exception, e:
        if i==2:
            logger.info(e)
1 голос
/ 19 августа 2011
while True:
    try:
        test()
        break
    except Exception, e:
        logger.info(e)

Посмотрите документы Python по Обработка исключений .

1 голос
/ 19 августа 2011

Попробуйте это:

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