ContextLib.contextManager не поднимает исключения, если возврат, наконец, в пунктеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 ContextLib.contextManager не поднимает исключения, если возврат, наконец, в пункте

Сообщение Anonymous »

Я только что столкнулся с действительно странным поведением Python's ContextLib.ContextManager .
может ли кто -нибудь объяснить мне, если это задумано (и почему):

Если вы положите return inkecken Contectustman, не более Codeman . Повышен.

Код: Выделить всё

from contextlib import contextmanager

@contextmanager
def test():
try:
print("inside the contextmanager")
yield
finally:
print("exiting contextmanager")
return # This shomehow shadows any exception raised within the contextmanager

with test():
try:
raise RuntimeError("ASDF")
except Exception as ex:
print(f"there's an {ex} exception... lets raise it again!")
raise ex
print("i don't care about exceptions")
< /code>
Если я запускаю это, я получаю следующее: < /p>
>>> inside the contextmanager
>>> there's an ASDF exception... lets raise it again!
>>> exiting contextmanager
>>> i don't care about exceptions
Я бы ожидал, что исключение поднято.


Подробнее здесь: https://stackoverflow.com/questions/796 ... nally-clau
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»