это продолжение вопроса Перехват исключения при использовании оператора Python 'with' .
Я новичок и протестировал следующий код с 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 и т. Д., Но я знаю, что исключения могут приходить отовсюду и невозможно защитить каждый фрагмент кода.
Подводя итог, я просто хочу напечатать 'error' тогда и только тогда, когда 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's answer
Спасибо!