В следующем коде что-то не так с оператором with
и обработкой исключений в python3?Если нет, как правильно записать ожидаемый результат?
from contextlib import contextmanager
@contextmanager
def test():
print("Hello")
yield
print("goodbye")
try:
with test():
print("inside test")
raise KeyError
except KeyError:
print("KeyError")
else:
print("else")
finally:
print("finally")
, и результат будет
Hello
inside test
KeyError
finally
, а я ожидаю результат будет:
Hello
inside test
goodbye
KeyError
finally
, который, как мне кажется, другие люди пишут аналогичным образом в надежде, что файл будет закрыт, когда возникнет исключение во время обработки файла.
Мой python3версия:
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609]