Вызывается ли метод __exit__ при возникновении исключения внутри диспетчера контекста? - PullRequest
0 голосов
/ 29 мая 2020

Представьте, что у нас есть диспетчер контекста с именем abc. Таким образом, в приведенном ниже коде вызывается метод __exit__, определенный внутри ab c, в случае исключения.

with abc:
    print("entered context manager")
    raise Exception("raising exception")


1 Ответ

0 голосов
/ 29 мая 2020

Да, согласно docs . Метод __exit__ принимает исключение в качестве аргументов:

object.__exit__(self, exc_type, exc_value, traceback)

Выйти из контекста времени выполнения, связанного с этим объектом. Параметры описывают исключение, которое привело к выходу из контекста. Если контекст был завершен без исключения, все три аргумента будут равны Нет.

В этом вопросе гораздо больше ответов и информации.

Это был первый результат Google, когда я набрал python __exit__ exception.

...