Else в заявлении try... что это хорошо для

Возможный дубликат:
Python try-else

Исходя из фона Java, я не совсем понимаю, что такое предложение else.

В соответствии с документами

Это полезно для кода, который должен быть выполняется, если предложение try не вызывать исключение.

Но почему бы не поместить код после блока try? Кажется, что я здесь что-то не так важно...

Ответ 1

Предложение else полезно, потому что вы знаете, что код в пакете try был успешным. Например:

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print 'cannot open', arg
    else:
        print arg, 'has', len(f.readlines()), 'lines'
        f.close()

Вы можете безопасно выполнять операции над f, поскольку вы знаете, что его присвоение выполнено успешно. Если код был просто после попытки... кроме, у вас может не быть f.

Ответ 2

Рассмотрим

try:
    a = 1/0
except ZeroDivisionError:
    print "Division by zero not allowed."
else:
    print "In this universe, division by zero is allowed."

Что произойдет, если вы поместите второй print вне блока try/except/else?

Ответ 3

Это код, который вы хотите выполнить, только если не было создано никакого исключения.