添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
纯真的领结  ·  npm ...·  11 小时前    · 
心软的饺子  ·  python 如何安装npm - CSDN文库·  11 小时前    · 
年轻有为的双杠  ·  npm ERR! gyp ERR! ...·  11 小时前    · 
细心的茶叶  ·  30分钟学会Yaml-cpp 0.6.0 ...·  1 年前    · 
无聊的生姜  ·  Power BI ...·  1 年前    · 
旅途中的西装  ·  android studio 插件 ...·  1 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I need to invoke method f . If it raises an IOError , I need to invoke it again (retry), and do it at most three times. I need to log any other exceptions, and I need to log all retries.

the code below does this, but it looks ugly. please help me make it elegant and pythonic. I am using Python 2.7.

thanks!

count = 3
while count > 0:
    except IOError:
        count -= 1
        if count > 0:
            print 'retry'
        continue
    except Exception as x:
        print x
    break
                You might want to re-raise the IOError on the last try though, so that the program ends with an actual exception (and without a note about a retry that doesn’t happen).
– poke
                Nov 9, 2011 at 17:38
                thanks. "else" clause is useful, but I need to log all exceptions, so I have to catch the other ones too. yes, I cold raise them again after I have logged them.
– akonsu
                Nov 9, 2011 at 17:44
                @akonsu If you want to catch all exceptions, just leave out the IOError or replace it with BaseException.
– phihag
                Nov 9, 2011 at 17:48
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.