Захват исключения при использовании инструкции Python with with - Part 2

Это продолжение вопроса Захват исключения при использовании инструкции Python с инструкцией.
Я очень новичок, и я протестировал следующий код с Python 3.2 на GNU/linux.

В вышеупомянутом вопросе было предложено что-то похожее на то, чтобы поймать исключение из инструкции 'with':

try:
    with open('foo.txt', 'a'):
        #
        # some_code
        #
except IOError:
    print('error')

Это заставляет меня задаться вопросом: что произойдет, если some_code вызывает IOError, не поймав его? Это, очевидно, было воспринято внешним "исключением", но это не могло быть тем, что я действительно хотел.
Вы можете сказать, хорошо, просто оберните some_code с помощью другой try-except и т.д., Но я знаю, что исключения могут возникать повсюду, и невозможно защитить каждый фрагмент кода. Подводя итог, я просто хочу напечатать "ошибку" тогда и только тогда, когда open ('foo.txt', 'a') вызывает исключение, поэтому я здесь, чтобы спросить, почему следующий код не является стандартным предложенным способом делая это:

try:
    f = open('foo.txt', 'a')
except IOError:
    print('error')

with f:
    #
    # some_code
    #

#EDIT: 'else' statement is missing, see Pythoni answer

Спасибо!

Ответ 1

try:
    f = open('foo.txt', 'a')
except IOError:
    print('error')
else:
    with f:
        #
        # some_code
        #