Это продолжение вопроса Захват исключения при использовании инструкции 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
Спасибо!