• Python эксепшны жуйковчанин, а ты считаешь очевидным результат работы такого кода? Что ты думаешь об этом?
    def test():
    try:
    print 'try and raise'
    raise Exception()
    except Exception:
    print 'except and return'
    return 10
    finally:
    print 'finally'

    print test()

Replies (10)

  • @kb, не запускал:
    try and raise
    except and return
    finally
  • @kb, для такого кода есть: govnokod.ru
  • @shigin, значит это хоть немного очевидно, что ли) Просто мой мозг ломается, когда видит выполнение кода после return'а. Это ж мечта C++'ника, сделать return а потом del :-)
  • @alsmirn, Ну а если серьезно — мне надо сделать один и тот же код, который должен выполниться в случае эксепшна и в случае его отсутствия, но в случае эксепшна мне необходимо делать после этого кода return) вот дошел до такого кода и понял что что-то здесь не так
  • @kb, Ну как--бы finally выполняется всегда, так что... Но да, я видел код, где return стоял внутри try-finally, а перед этим return выполнялся тот же код, что и в finally. Так что, это, возможно, общая проблема.
  • @kb, ок, вот главный запутывающий кусок кода, как по мне:
    def test():
    a = 1
    try:
    a = 2
    return a
    finally:
    a = 3

    print test()
  • @shigin, Меня каждый раз убивают else для for и try. Я не могу запомнить что они делают. Радует только то, что их почти никто не использует.
  • @kb, ясно. А эксепшен вы сами бросаете или это просто на схеме так? И файнали вам точно нужен? Есть ещё else... ;)
  • @alsmirn, не, не сам, конечно. Просто стало интересно как это вообще работает)
  • @kb, ясно.