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